如题~
由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
博客内容讲述了如何通过优化算法,避免超时,找出由0到9不重复组成的10位数字中最大的平方数。博主分享了一段C++代码,通过缩小搜索范围并判断数字是否为10位不重复的条件,最终找到答案9814072356。
1605

被折叠的 条评论
为什么被折叠?



