/*======================================================================== 求满足条件的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 }