奇妙的数字 小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。 你能猜出这个数字是多少吗? 请填写该数字,不要填写任何多余的内容。
解法1:
#include<iostream>
#include<algorithm>
#include<sstream>
using namespace std;
int check(long i,long j){
string a="0123456789";
string b;
string c;
stringstream ss;
ss<<i;
ss>>b;
stringstream aa;
aa<<j;
aa>>c;
b+=c;
sort(b.begin(),b.end());
if(b==a){
return 1;
}
return 0;
}
int main(){
for(long long i=1;;i++){
if(check(i*i,i*i*i))
{
cout<<i;
break;
}
}
return 0;
}
解法2(水题,顺便熟悉一下set的用法把):
#include<iostream>
#include<algorithm>
#include<set>
#include<sstream>
using namespace std;
void f(int i,string &str){
stringstream ss;
ss<<i;
ss>>str;
return ;
}
bool check(string a){
set<char> st;//set不允许有重复,multiset可以
for(int i=0;i<a.length();i++){
st.insert(a[i]);
}
return st.size()==10;
}
int main(){
for(int i;;i++){
string a;
string b;
f(i*i,a);
f(i*i*i,b);
a+=b;
if(check(a)){
cout<<i;
break;
}
}
return 0;
}