【编程题】猜年龄

题目标题: 猜年龄

美国数学家维纳(N.Wiener)

智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。

一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:

“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”

请你推算一下,他当时到底有多年轻。

#include <iostream>
#include <algorithm>
using namespace std;
int y[15],j;
int f (int x,int z)//该函数用来确定该十个数字是否有重复
	           //重复返回0,不重复即为正解返回1						 
{
	int m,k;
	j=0;
	while(x>0)
	{
		m=x%10;
		y[j]=m;
		j++;
		x=x/10;
	}
	while(z>0)
	{
		m=z%10;
		y[j]=m;
		j++;
		z=z/10;
	}
	for(k=1;k<j;k++)
	{
		sort(y,y+j);
		if(y[k]==y[k-1])
		{
			return 0;
		}
	}
	return 1;
}
int main ()
{
	int a,i,xxx,xxxx,x;
	for(i=11;i<=31;i++)//自己实现推断符合的年龄的范围
		          //缩小到11到31 
	{
		xxx=i*i*i;
		xxxx=i*i*i*i;
		x=f(xxx,xxxx);
		if(x==1)
		{
			cout<<i<<endl;
			break;
		}	
	}
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/csdn___csdn/article/details/81170389