总时间限制: 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 }