题目描述
小明发现了一个奇妙的数字。它的平方 和 立方正好把0~9的10个数字每个用且只用了一次。你能猜出这个数字是多少吗?
输出格式
请输出该数字,不要输出任何多余的内容。
分析:
- 先判断大概的范围。写一个测试函数。
题目的意思:把0~9的10个数字每个用且只用了一次。所以总的位数为10位。根据这点来判断范围。
#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n;
int sum = n*n+n*n*n;
while(cin>>n)
{
cout<<n*n<<' '<<n*n*n<<endl;
}
return 0;
}
- 确定了范围:47-99.即 [47, 99]
代码
#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
int main()
{
for(int i=47;i<=99;i++){
int a = i*i;
int b = i*i*i;
int c[10]={0};
int temp = 0,flog=0;
while(a){
temp = a%10;
a/=10;
c[temp]++;
}
while(b){
temp = b%10;
b /=10;
c[temp]++;
}
for(int j=0;j<10;j++){
if(c[j]==0){
flog = 0;
break;
}else{
flog = 1;
}
}
if(flog==1){
cout<<i;
}
}
return 0;
}
- 需要一个数组 存储每个0-9出现的频率,次数。
- 相当于,求平方的每位数,并记录下出现的频率。
求立方的每位数,并记录下出现的频率。 再判断,如果都出现了,就成功。
|