/*========================================================================
求满足条件的3位数
总时间限制:
1000ms
内存限制:
65536kB
描述
编写程序,按从小到大的顺序寻找同时符合条件1和2的所有3位数,条件为:
1.该数为完全平方数
2.该数至少有2位数字相同
例如,100同时满足上面两个条件。
输入
输入一个数n,n的大小不超过实际满足条件的3位数的个数。
输出
输出为第n个满足条件的3位数(升序)
样例输入
1
样例输出
100
==========================================================================*/
1 #include<iostream>
2 #include<math.h>
3 using namespace std;
4 int main()
5 {
6 int n;
7 int i,t;
8 int x,y,z;
9 int xx,yy,zz;
10 cin>>n;
11 for(i=100;i<1000;i++) //检查每一个三位数,判断其是否符合要求
12 {
13 t=sqrt(i);
14 if(t*t==i)//这个if语句的条件语句是判断i是否完全平方数
15 {//下面把i的各个位拆开来检查有否相同位。
16 x=i/100;
17 y=(i-x*100)/10;
18 z=i%10;
19 xx=0;
20 yy=0;
21 zz=0;
22 xx=(x==y);
23 yy=(x==z);
24 zz=(y==z);
25 if(xx+yy+zz>=1)
26 {
27 n--;
28 if(n==0)//当发现到第n个满足两个条件的数时停止。
29 {
30 cout<<i<<endl;
31 break;
32 }
33 }
34 }
35 }
36 return 0;
37 }