精华内容
下载资源
问答
  • 2021-07-19 17:28:35
    #include<stdio.h>
    int main()
    {
    	int a=100;
    	for(a;a<1000;a++)
    	{
    		for(int m=1;m<=a/2;m++)
    		{
    			if(m*m==a)
    			{
    				int i=a%10;
    				int j=(a/10)%10;
    				int k=a/100;
    				if(i==j||i==k||j==k)
    				{
    					printf("%d\t",a);
    					break;
    				}
    			}
    		}
    	}
     } 

    更多相关内容
  • 在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组;他既是完全平方数,又是两位数字相同,例如144,676等#include #include #include using namespace std; /* (2007)按要求输出:在三位...

    在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;他既是完全平方数,又是两位数字相同,例如144,676等

    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    using namespace std;
    /*
        (2007)按要求输出:在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;
            他既是完全平方数,又是两位数字相同,例如144,676等
    */
    int isSquere(int x)//判断是否是平方数
    {
        double y =(double)x;
        double temp = sqrt(y);
        int i = (int)temp;
        if(i*i == x){
            return 1;
        }
        else {
            return 0;
        }
    }
    
    int isTwoSame(int x)
    {
        int digit0 = x%10;
        int digit1 = (x/10)%10;
        int digit2 = x/100;
        return(digit0==digit1||digit0==digit2 ||digit1==digit2); //这里不知道有没有理解错误,三位数相同也算两位数相同
    }
    int main()
    {
        for(int i =100;i<1000;++i){
            if (isSquere(i)&&isTwoSame(i)){
                printf("%d\n",i);
            }
        }
    // 调试代码,原因是digit0 == digit2 写成digit0 ==digit1,找了半天
    //    int i =121;
    //    int a=2,b=1;
    //    a = isSquere(i);
    //    b = isTwoSame(i);
    //    if (isSquere(i)&&isTwoSame(i)){
    //        printf("i=%d,a=%d,b=%d\n",i,a,b);
    //    }
    //    printf("i=%d,a=%d,b=%d\n",i,a,b);
        return 0;
    }
    
    展开全文
  • 题目:我们称一个十进制正整数是幸运数当且仅当它只由数字4和...样例输入125样例输出6思路:输入一个整数,把该数转化为字符串,然后分别判断字符串每字符(即:整数)是否符合题目的要求。这里是4或者7组成的数才...

    题目

    我们称一个十进制正整数是幸运数当且仅当它只由数字4和7构成。现在给出一个正整数n,你需要计算有多少个不大于n的幸运数。由于答案可能非常大,你只需要输出答案除以109+7后的余数。
    输入
    第一行包含一个整数n。1≤n≤10100000
    输出
    输出对应的答案。

    样例输入
    125
    样例输出
    6

    思路:输入一个整数,把该数转化为字符串,然后分别判断字符串每位字符(即:整数)是否符合题目的要求。这里是4或者7组成的数才是幸运数,每位都有4或7,这两种可能。那么对于一个n位数来说,如果每位的数字都大于等于7的话,符合幸运数要求的就有2^n个,换而言之,如果只要有一位的数小于4,那该n位数是没有幸运数的。但是n-1位,n-2位......1位的幸运数可以求出。然后分别求n-1位,n-2位......1位符合幸运数要求的个数(其实这里是公比为2的等比数列,可以用公式求出来)。举个例子:样例输入1489,对于这个四位数来说,该四位数没有符合的幸运数。但是比该四位数小的三位数就有2^3个,二位数有2^2个,个位数有2个。

    代码如下:

    public class ShunFengBishi {
    	//判断一个整数是否符合幸运数
    	public static int adjugeNum(char c)
    	{
    		String s = String.valueOf(c);
    		int num = Integer.parseInt(s);
    		int re = 0;
    		if(num>=4 && num < 7) 
    		{
    			re = 1;
    		}else if(num >= 7)
    		{
    			re = 2;
    		}
    		return re;
    	}
    	//
    	public static int adLuckyNum(int num)
    	{
    		String str = num +"";
    		int count = 1;//保存n位数包含幸运数的个数
    		char[] ch = str.toCharArray();
    		int[] arr = new int[ch.length];//保存n位数中每位的包含幸运数的个数 
    		int sum = 0;
    		for(int i=0; i<ch.length; i++)
    		{
    			//如果其中有一位的数小于4,说明该n位数肯定不包含幸运数,所以都不用遍历该数了
    			if(adjugeNum(ch[i]) == 0)
    			{
    				break;
    			}
    			else 
    			{
    				arr[i] = adjugeNum(ch[i]);
    			}
    		}
    		//对arr数组进行遍历
    		for(int j=0; j<arr.length; j++)
    		{
    			count *= arr[j];
    		}
    		//算比n位数少几位的数的个数,如n-1、n-2、...1
    		if(ch.length-1 > 0)
    		{
    			sum = (int) (Math.pow(2, ch.length)-2);
    		}
    		
    		return count+sum;
    	}
    	//
    	public static void main(String[] args) 
    	{
    		Scanner sc = new Scanner(System.in);
    		while(sc.hasNext())
    		{
    			System.out.println(adLuckyNum(sc.nextInt()));
    		}		
    	}
    
    }
    
    这个题目是做笔试题的时候做的,当时没做出来,事后想看看大神的们解题思路,找了下,没找到。自己只能硬着头皮做了。如果,哪位大神有好的思路,望告知下,谢谢!







    展开全文
  • 找出数组中符合条件的数对的个数

    千次阅读 2016-06-25 16:00:07
    设计一个算法,找出数列中符合条件的数对的个数,满足数对两数的和等于N+1。 方法一:排序+二分查找。先对数组进行排序,然后遍历该有序数组,同时使用二分查找方法,查找对应的值是否存在(例如,有序数组某...

    题目:一个整型数组,元素取值可能是1~N(N是一个较大的正整数)中的任意一个数,相同数值不会重复出现。设计一个算法,找出数列中符合条件的数对的个数,满足数对中两数的和等于N+1。
    方法一:排序+二分查找。先对数组进行排序,然后遍历该有序数组,同时使用二分查找方法,查找对应的值是否存在(例如,有序数组中某元素值为a,那么在该有序数组中,使用二分查找方法,来查找(N+1- a)是否存在)。

    方法二:排序+线性扫描。先对数组进行排序,然后使用两个指示器(front和back)分别指向第一个和最后一个元素,再从两端同时向中间遍历,直到两个指针交叉。
    (1)如果A[front] + A[back] > N+1,则back - -。
    (2)如果A[front] + A[back] = N+1,则计数器加1,back - -,同时front++。
    (3)如果A[front] + A[back] < N+1,则front++。
    重复上述步骤,O(n)时间就可以找到所有数对,因此总体复杂度为O(nlogn)。
    通过给出一个有序数组,来观察方法二的实现,如下:

    #include <iostream>
    
    void FindSum(int arr[], int len, int sum)
    {
        int i,j;
        for (i = 0, j = len - 1; i < len && j >= 0 && i < j;)
        {
            if (arr[i] + arr[j] < sum)
                i++;
            else if (arr[i] + arr[j] == sum)
            {
                printf("%d + %d = %d\n", arr[i], arr[j], sum);
                i++;
                j--;
            }
            else
                j--;
    
        }
    }
    
    int main(int argc, const char * argv[]) {
    
        int arr[] = {1,2,3,4,5,6};
        int len = sizeof(arr)/sizeof(int);
        FindSum(arr, len, 8);
    
        return 0;
    }

    方法三:hash法。即使用hash法,对数组进行计数排序,将1~N个数放在一块很大的空间里面,比如1放在1号位,N放在n号位置,然后对每个数m,在hash表中寻找“下标N+1- m 对应的值是否存在“,若存在,则构成一对满足要求的数对。总体时间复杂度为O(n)。

    拓展一:
    如果是任意数组,而不是本题的有规律数组,如何求解数组对?即给定一个任意整数数组array[n],寻找数组中和值为SUM的数对。(方法同上)
    方法一:排序+二分查找。先对数组进行排序,然后遍历该有序数组,同时使用二分查找方法,查找对应的值是否存在(例如,有序数组中某元素值为m,那么在该有序数组中,使用二分查找方法,来查找(SUM - m)是否存在)。

    方法二:排序+线性扫描。先将数组排序后(一般最快的排序算法时间复杂度为O(nlogn)),然后设两个指针指向数组的两端,判断这两个指针对应元素之和是否为SUM,如果等于SUM,则找到了,继续查找;如果小于SUM,那么首指针递增;如果大于SUM,尾指针递减,直到两个指针相遇时,如果还是没有和为SUM的元素对出现,那么返回false。

    方法三:hash法。将数组存储到hash表中,对每个数m,在hash表中寻找SUM - m,此时时间复杂度为 O(n)。需要注意的是,如果数组空间很大,超过了内存的容量,那么可以按照hash(max(m, SUM - m))%g,将数据分到g个小的组中,然后对每个小组进行单独处理,此时时间复杂度还是O(n)。

    拓展二:
    已知大小分别为 m、n 的两个无序数组 A、B 和一个常数 c,求满足A[ i ] + B[ j ] = c 的所有 A[ i ] 和 B[ j ]。(方法同上)
    方法一:排序+二分查找。首先,对两个数组中较大数组(假设为 A)排序;然后,对 B 中每个元素 B[ i ] 在 A 中二分查找 c - B[ i ],如果找到,直接输出。此方法的时间复杂度为 O(mlogm + nlogm)。

    方法二:排序+线性扫描。首先,对两个数组 A 和 B 进行排序;然后用指针 p 从头扫描 A,用指针 q 从尾扫描 B,如果 A[ p ] + B[ q ] == c,则输出 A[ p ] 和 B[ q ],且p++,q++;如果 A[ p ] + B[ q ] > c,则 q–;否则 p++。时间复杂度为O(mlogm + nlogn)。

    方法三:hash法。首先,将两个数组中较小的数组(假设为A)保存到hash表中,然后,对于 B 中的每个元素 B[ i ],也采用相同的hash算法在hash表中查找 c - B[ i ] 是否存在,如果存在,则输出。时间复杂度为O(m + n),空间复杂度为O(min(m, n))。

    展开全文
  • [算法练习]寻找三位

    千次阅读 2018-08-07 20:04:37
    1:2:3的比例,试求出所有满足条件的三个三位数。 例如:三个三位数192,384,576满足以上条件。   思路 ①据题目要求,第一个三位数m应满足条件 123&lt;=m&lt;333(三个数字均为三位数) ②第二个数...
  • python求所有三位的水仙花数

    千次阅读 2021-01-05 11:44:36
    @demo小计 python求所有三位的水仙花数 for i in range(100, 1000): a = int(str(i)[-1]) b = int(str(i)[-2]) c = int(str(i)[0]) if a ** 3 + b ** 3 + c ** 3 == i: print(i) 结果
  • 下面展示的是简单易懂的「筛法」:from math import ceil,sqrtmaxN = 100 # [1, maxN]范围内的整数寻找质数board = (maxN+1)*[0]ptrI = 0print("开始1到"+str(maxN)+"范围内寻找质数")board[0] = 1 # 0 不是质数...
  • C# 操作INI文件

    2015-10-25 14:07:58
    C# 操作INI文件 辅助类 操作非常方便。
  • 求满足条件的3位数

    千次阅读 2019-12-31 17:11:46
    编写程序,按从小到大的顺序寻找同时符合条件1和2的所有3位数,条件为: 1.该数为完全平方数 2.该数至少有2数字相同 例如,100同时满足上面两个条件。 输入 输入一个数n,n的大小不超过实际满足条件的3位数的...
  • //请小于99999的正整数中符合下列条件的数,它既是完全平方数,又有两数字相同,如:144,676。用c语言编写(不能用数字转换成字符串)。 #include "stdafx.h" #include #include #include #...
  • Python题目:求出满足条件的4位数

    千次阅读 2019-11-18 20:11:42
    2、且第一位和第三位数字之和为10 3、第二位与第四位数字之积为12 import math for num in range(1000,10000): #生成4位数 if len(str(math.sqrt(num))) == 4: #判断是否可以完全开方 if (int(str(num)[0...
  • C语言学习 找出三位水仙花数

    万次阅读 多人点赞 2020-10-17 09:08:45
    输入一行给出两个正整数M和N(100≤M≤N≤999)。 输出格式: 顺序输出M和N区间内所有三位水仙花数,每一行输出一个数。若该区间内没有三位水仙花数,则无输出。 如果M或者N不符合题目的要求,则输出Invalid ...
  • 总时间限制: 1000ms 内存限制: 65536kB ...编写程序,按从小到大的顺序寻找同时符合条件1和2的所有3位数,条件为: ...由题可知,这是三位数,所以只需在三位数之间寻找。 2.该数为完全平方数...
  • 找出三位水仙花数(15分)

    千次阅读 2022-01-14 09:49:48
    找出三位水仙花数
  • 练习五1002不满足条件三位

    千次阅读 2017-03-11 14:54:33
    练习五1002描述编写程序,按从小到大的顺序寻找同时符合条件1和2的所有3位数,条件为: 1.该数为完全平方数 2.该数至少有2数字相同 例如,100同时满足上面两个条件。输入输入一个数n,n的大小不超过实际满足...
  • 一道简单的题目:找出四位整数abcd 满足下述关系的数:(ab+cd)(ab+cd)=abcd。可以用c语言编程做出来,也可以用python、shell、Java等其他很多种语言。 下面是用C语言编写出来的代码: #include <stdio.h> int...
  • 【ZZULIOJ】1076: 三位数求解

    千次阅读 2020-11-15 00:38:28
    1076: 三位数求解 题目描述 已知xyz+yzz=n,其中n是一个正整数,x、y、z都是数字(0-9),编写一个程序求出x、y、z分别代表什么数字。如果无解,则输出“No Answer” 注意:xyz和yzz表示一个三位数,而不是表示xyz...
  • 话题:编写函数,计算一个整数各位数字之和回答:这个关键是怎么得到每数, #includeint sum_num(int num)//得到每数的函数 { int sum=0; while(num10) //计算每位数的循环,先得到的是各位然后依次类推 { sum+=...
  • 整数中1出现的次数(从1到n整数中1出现的次数) 求出1 ~ 13的整数中1出现的次数,并算出100 ~ 1300的整数中1出现的次数?为此他特别数了一下1~13包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他...
  • 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 输入格式: 无输入。 输出格式: 每一行输出一个组合,中间以空格分开。 输入样例: 这里给出一组输入。例如: 输出样例: ...
  •  现在问题就可以转化为:这个无穷数列,挑选一些数出来,使得他们的和能够整除N,一种挑选方案实际上对应于b1 b2 b3…的一种真值指派(每一选中为1,否则为0)。  到此我们已经发现,这个问题可以采用...
  • 【中学】寻找阿姆斯特朗数

    千次阅读 2020-05-30 14:49:49
    【中学】寻找阿姆斯特朗数 请编写一个程序寻找一种特殊整数:一个 n 位的正整数等于其...假设输入为4,4位整数中,有3个4位的特殊数,则输出格式为(输出的1111、2222和9999并不是4位特殊数,只是格式样例): 111
  • 寻找整数(容斥原理) - HDU 1796

    千次阅读 2018-11-20 15:14:54
     容斥原理简介:计数时,为了使重叠部分不被重复计算,人们研究出一种新的计数方法:先不考虑重叠的情况,把包含于某内容的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既...
  • 第十届蓝桥杯省赛Python 组

    千次阅读 多人点赞 2022-04-09 21:47:23
    第十届蓝桥杯省赛PythonB组真题+题解
  • java输出满足条件的组合

    千次阅读 2017-09-12 15:14:36
    题目要求,输出个数满足,个数相成等于36,切个数都是个正数。输出的是组合,不能重复 import java.util.*; public class Operation{ public static void main(String args[]){ int i=0; int j=0; ...
  • 直接得出: 根据数组建立平衡二叉搜索树 java整体打印二叉树 判断平衡二叉树 判断完全二叉树 判断二叉搜索树 二叉搜索树实现 堆的简单实现 堆应用例题连 一个数据流,随时可以取得中位数。 金条 项目最大收益...
  • 3.static的第个作用是默认初始化为0(static变量) 其实全局变量也具备这一属性,因为全局变量也存储静态数据区。静态数据区,内存所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。 4....
  • 如何把一个字符串转换成整数

    千次阅读 2020-02-26 12:27:36
    假设我们的环境只能存储 32 大小的有符号整数,那么其数值范围为 [−231, 231 − 1]。如果数值超过这个范围,请返回 INT_MAX (231 − 1) 或 INT_MIN (−231) 。 代码如下: int myAtoi ( string str ) { ...
  • 《Python习题选编》由会员分享,可在线阅读,更多相关《Python习题选编(20页珍藏版)》请人人文库网上搜索。1、Python习题选编华东师大信息学院计算中心一程序结构与算法部分1. 编写一个python程序,输入两个数,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,128
精华内容 10,851
关键字:

在三位整数中寻找符合条件的