求满足条件的3位数

描述

编写程序,按从小到大的顺序寻找同时符合条件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;
    }
发布了113 篇原创文章 · 获赞 2 · 访问量 1546

猜你喜欢

转载自blog.csdn.net/C_Dreamy/article/details/103786349