问题描述
【题目描述】
【输出】
题目解析
一层循环遍历 i i i求出 i ∗ i i*i i∗i以及 i ∗ i ∗ i i*i*i i∗i∗i并将 i n t int int型变量转换成 s t r i n g string string类型的变量以便后续 c h e c k ( ) check() check()操作。
在 c h e c k ( ) check() check()函数中我们用 s e t set set集合来进行字符的插入,如果最后 s e t set set集合个数==10说明成功就可以返回。
C++代码
#include<bits/stdc++.h>
using namespace std;
void i2s(int num,string &str)
{
stringstream ss;
ss<<num;
ss>>str;
}
bool check(string s)
{
set<char> ss;
for(int i=0;i<s.length();i++)
{
ss.insert(s[i]);
}
return s.size()==10&&ss.size()==10;
}
int main()
{
for(int i=1;i<100000;i++)
{
string s1,s2;
i2s(i*i,s1); //把i*i转换成字符串
i2s(i*i*i,s2);
if(check(s1+s2)) //检查
{
cout<<i<<endl;
break;
}
}
return 0;
}