题目:
奇妙的数字
小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。
你能猜出这个数字是多少吗?
请填写该数字,不要填写任何多余的内容。
———————————————————————————————————
#include <iostream> #include <sstream> #include <algorithm> using namespace std; void i2s(int s,string &S){ //进行转字符串 stringstream ss; ss<<s; ss>>S; } //这里利用sort的升序及0-10字符串进行比较来判断是否成立 bool check(string s) { string a = "0123456789"; sort(s.begin(),s.end()); //将字符串中间数字排序 if(s == a) //直接进行判断是否相等 return true; else return false; } int main() { for(int i=1;i<10000;i++){ string s1,s2; int s = i*i; int ss = i*i*i; i2s(s,s1); //将整型转为字符串 i2s(ss,s2); if(check(s1+s2)) //用来判断是否得到0-9各个数字 cout<<i<<endl; //答案为69 } return 0; }
check也可以利用set容器,插入时自动排序,并且不允许有重复的数
bool check(string s) { set<char> s1; for(int i=0;i<s.size();i++){ s1.insert(s[i]); } if(s.size()==10&&s1.size()==10) //如果有10个数说明10个数互不相同为0-9 return true; else return false; }