描述
编写程序,按从小到大的顺序寻找同时符合条件1和2的所有3位数,条件为:
1.该数为完全平方数
2.该数至少有2位数字相同
例如,100同时满足上面两个条件。
输入
输入一个数n,n的大小不超过实际满足条件的3位数的个数。
输出
输出为第n个满足条件的3位数(升序)
样例输入
1
样例输出
100
#include <iostream>
using namespace std;
typedef long long ll;
#define A 10+5
bool judge (int );
bool same(int);
int i,j=0;
int main()
{
int n;
cin>>n;
int count=0;
for(j=100;j<=999;j++)
{
if(judge(j)&&same(j))
{
count++;
}
if(n==count)
{
cout<<j<<endl;
break;
}
}
return 0;
}
bool judge (int n)
{
int i;
for(i=10;i<=32;i++)
{
if(n==i*i) return true;
if(i*i>n) return false;
}
return false;
}
bool same (int n)
{
int a[10]={0};
while (n)
{
a[n%10]++;
n/=10;
}
for(int i=0;i<=9;i++)
{
if(a[i]>=2)return true;
}
return false;
}