三、题目:奇妙的数字
题目描述:小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。你能猜出这个数字是多少吗?请填写该数字,不要填写任何多余的内容.
1.分析思路:
枚举法,和之前的几道题目类似,
把数字转化为字符串,比较数字位数
2.代码:
#include<iostream>
#include<sstream>
#include<string>
#include<set>
using namespace std;
void i2s(int num,string &str){ //把数字转化为字符串
stringstream ss;
ss<<num; //输入数字
ss>>str; //输出为字符串
}
bool check(string s){ //判定转化后的数字是否为0-9且只出现一次
set<char> ss; //去掉重复
for(int i=0;i<s.length();i++){
ss.insert(s[i]);
}
return s.size()==10&&ss.size()==10; //字符串的长度为10,且计算平方和和立方和相加位数为10
}
int main(){
for(int i=1;i<100000;i++){
string s1,s2;
i2s(i*i,s1);
i2s(i*i*i,s2);
if(check(s1+s2)){ //平方和立方和拼接
// break;
cout<<i<<endl;
}
}
return 0;
}

之后检验一下是否正确
6969=4761
6969*69=328509
拼起来正好就是10位数字

本文介绍了一种使用枚举法和字符串转换技巧找到一个特殊数字的方法,该数字的平方和立方能够恰好包含0到9所有数字各一次。通过C++代码实现并验证了6969这一奇妙数字。
1357

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



