各位程序员,如何编写?

问题 D: 求满足条件的3位数
题目描述
编写程序,按从小到大的顺序寻找同时符合条件1和2的所有3位数,条件为:
1.该数为完全平方数
2.该数至少有2位数字相同
例如,100同时满足上面两个条件。
输入
输入一个数n,n的大小不超过实际满足条件的3位数的个数。
输出
输出为第n个满足条件的3位数(升序)


#include <iostream>
#include <cmath>
using namespace std;
bool judge(int m)//判断m是不是完全平方数
{
    double x=sqrt(m);
    if(floor(x)==x)
    {
        return true;
    }
    return false;
}
int main()
{
    int n;
    cin>>n;
    int count=0;
    for(int i=1; i<=9; i++)
    {
        for(int j=0; j<=9; j++)
        {
            for(int k=0; k<=9; k++)
            {
                int flag1=0,flag2=0;
                if(i==j||j==k||k==i)//如果任意两个数相同
                {
                    flag1=1;
                }
                int s=i*100+j*10+k;
                if(judge(s))//判断s是不是完全平方数
                {
                    flag2=1;
                }
                if(flag1==1&&flag2==1)
                {
                    count++;
                    if(n==count)
                    {
                        cout<<s<<endl;
                        return 0;
                    }
                }
            }
        }
    }
    return 0;
}