奇妙的数字
小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。
你能猜出这个数字是多少吗?
请填写该数字,不要填写任何多余的内容。
答案:69
题目解析
思路是这样的,在一定区间内枚举所有的数,对这些数进行判断。计算出他们的平方以及了立方之后,将这两个值转成字符串,然后放到set里面去检查是不是每个数字都是出现了一次,这里用到set能够很好的帮助检查是否有重复。最后判断set的长度是不是10就好啦!
枚举+判断
#include <iostream>
#include <sstream>
#include <set>
using namespace std;
void i2s(int num, string &str){
stringstream ss;
ss << num;
ss >> str;
}
bool check(string str){
set<char> s;
for(int i = 0; i < str.length(); i++){
s.insert(str[i]);
}
return s.size() == 10 && str.length() == 10;
}
int main(int argc, char** argv) {
for(int i = 1; i < 100000; i++){
string s1, s2;
i2s(i*i, s1);
i2s(i*i*i, s2);
if(check(s1 + s2)){
cout << i << endl;
cout << s1 << " " << s2;
break;
}
}
return 0;
}