bsp; if (((a1+a2)%2==0) && ((a2+a3)%3==0) && ((a1+a2+a3)%5==0))
{
if((a1+a2+a3)>max)
{
cnt=0; max=a1+a2+a3;
a[cnt][0]=a1; a[cnt][1]=a2; a[cnt][2]=a3;
}
else if ((a1+a2+a3)==max)
{
cnt++;
a[cnt][0]=a1; a[cnt][1]=a2; a[cnt][2]=a3;
}
}
}
cout<<"Max="<<max<<endl;
for (i=0;i<=cnt;i++)
cout<<"("<<a[i][0]<<","<<a[i][1]<<","<<a[i][2]<<")"<<endl;
return 0;
}
【例3】猜年龄
美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”
请你推算一下,他当时的年龄是多少?
(1)编程思路。
因为10的立方为最小的4位数,而23的立方为12167是个5位数,所以可以在10~22之间进行年龄的穷举。
定义一个数组int a[10]用于保存数字0~9的出现情况,每次穷举时均赋初值0。对每个年龄i,计算i的立方num1和4次方num2,然后将num1和num2的各位数字分解出来,相应置数组元素a[k]=1,若某个a[k]被两次或多次置1,则不符合要求。
(2)源程序及运行结果。
#include <iostream>
using namespace std;
int main()
{
int a[10],i,k,num1,num2;
for(i=10; i<22;i++)
&