题目描述
小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。
你能猜出这个数字是多少吗?
请填写该数字,不要填写任何多余的内容。
分析
先确定这个数的大致范围在 41 到 100(平方位数为 4 ,立方位数为 6),再进行暴力搜索(代码不够自信)
代码
#include<iostream>
using namespace std;
int main(){
int p,l,a[11],ans;
for(int i=41;i<100;i++){
int b[11]={
0,0,0,0,0,0,0,0,0,0},num=0;//每次循环一定要重新初始化计数数组以及 num !
p=i*i;
l=i*i*i;
for(int j=0;j<4;j++){
a[j]=p%10;
p/=10;
}
for(int k=4;k<10;k++){
a[k]=l%10;
l/=10;
}
for(int e=0;e<10;e++){
switch(a[e]){
case 0:b[0]++;break;
case 1:b[1]++;break;
case 2:b[2]++;break;
case 3:b[3]++;break;
case 4:b[4]++;break;
case 5:b[5]++;break;
case 6:b[6]++;break;
case 7:b[7]++;break;
case 8:b[8]++;break;
case 9:b[9]++;break;
}
}
for(int m=0;m<10;m++){
if(b[m]==1)
num++;
}
if(num==10){
ans=i;
break;
}
}
cout<<ans<<endl;
return 0;
}