14:求满足条件的3位数
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
编写程序,按从小到大的顺序寻找同时符合条件1和2的所有3位数,条件为:
1.该数为完全平方数
2.该数至少有2位数字相同
例如,100同时满足上面两个条件。 - 输入
- 输入一个数n,n的大小不超过实际满足条件的3位数的个数。
- 输出
- 输出为第n个满足条件的3位数(升序)
- 样例输入
-
1
- 样例输出
-
100
1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<cstring> 5 using namespace std; 6 int tot; 7 int i=99; 8 int a[11]; 9 int main() 10 { 11 int n; 12 cin>>n; 13 while(tot<n) 14 { 15 memset(a,0,sizeof(a)); 16 if(sqrt(i)!=ceil(sqrt(i))) 17 { 18 i++; 19 continue; 20 } 21 int c=i; 22 int now=0; 23 while(c!=0) 24 { 25 a[c%10]++; 26 if(a[c%10]>=2) 27 { 28 tot++; 29 if(tot==n)cout<<i; 30 else i++; 31 break; 32 } 33 else 34 c=c/10; 35 } 36 i++; 37 } 38 return 0; 39 }