OpenJudge计算概论-求满足条件的3位数

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

 

posted on 2013-12-09 19:23  华山青竹  阅读(1486)  评论(0编辑  收藏  举报

导航