如题~
由0~9这10个数字不重复、不遗漏,可以组成很多10位数字。
这其中也有很多恰好是平方数(是某个数的平方)。
比如:1026753849,就是其中最小的一个平方数。
请你找出其中最大的一个平方数是多少?
注意:你需要提交的是一个10位数字,不要填写任何多余内容。
啊,本来我是按照题给数字1026753849遍历的,结果超时了。
然后,借鉴了某些大佬的代码。
可以直接用开跟的数来算。学到了学到了。
代码如下:
#include<bits/stdc++.h>
using namespace std;
bool contain(long long n)//位数是否为10位不一样的数字
{
if(n == 0) return false;
set<long long> s;
while(n)
{
long long m = n % 10;
s.insert(m);
n /= 10;
}
return s.size() == 10;//检查是否为不重复的十位数字
}
int main()
{
long long int res = 0,a;
for(long long i = 32043; i <= 100000; i++)//缩小范围
{
long long x = i * i;//求平方
if(contain(x))
{
a = x;
res = max(res,a);
}
}
cout<<res<<endl;
return 0;
}
答案是:9814072356