项目场景:
美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。
一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:
“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”
请你推算一下,他当时到底有多年轻。
问题描述:
解决思路:
通过数组a[i]来保存数字i(0<=i<=9)出现的次数。按照题意,a[i]所有元素都为1才符合题意
代码:
#include <iostream>
using namespace std;
void check(int x,int *a)
{
while(x!=0){
a[x%10] ++;
x = x/10;
}
}
int main()
{
int num1,num2;
int count = 0;
int a[10] ={0};
for(int i = 18;i <= 21;i++){
num1 = i*i*i;
num2 = i*i*i*i;
check(num1, a);
check(num2, a);
for(int j = 0;j < 10;j++){
if(a[j]==1)
count++;
}
if(count==10)
cout << i << endl;
}
}
注意:
在定义函数时,如果有一个数组是其参数,则应当使用*a:
eg:void check(int x,int *a){
}
在调用此个函数时,可以直接将数组名称传进去:
eg:check(x,a);