比赛 20111111 评测结果 AAAAAAAAAA
题目名称 吉祥数 最终得分 100
用户昵称 Makazeu 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-11-11 09:31:08
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;

int N;
int M=0;
int Time=2;
int A[201];

void init()
{
	scanf("%d\n",&N);
	
	int tmp;
	while(cin>>tmp)
	{
		A[++M]=tmp;
	}
	
	return;
}

int sq(int num)
{
	int rs=1;
	for (int i=1;i<=Time;i++)
		rs*=num;
	return rs;
}

int GetTot(int num)
{
	int rs=0;
	int tmp[100]={0};
	int top=0;
	while(num)
	{
		tmp[++top]=num%10;
		num/=10;
	}
	for (int i=1;i<=top;i++)
		rs+=sq(tmp[i]);
	return rs;
}

int cmp(const void *a,const void *b)
{
	return *((int *)a)-*((int *)b);
}

void works()
{
	int lun=0;
	while(lun<N)
	{
		int tmp[201]={0};
		for (int i=1;i<=M;i++)
		{
			if(A[i]==-1)
				tmp[i]=-1;
			else
				tmp[i]=GetTot(A[i]);
		}
		
		for (int i=1;i<=M;i++)
		{
			if(A[i]==-1)
				continue;
			for (int j=1;j<=M;j++)
			{
				if(tmp[j]==-1)
					continue;
				if(tmp[j]==A[i])
				{
					A[i]=-1;
					break;
				}
			}
		}
		Time++;
		lun++;
	}	
	
	int Tmp[201]={0};
	int top=0;
	for (int i=1;i<=M;i++)
	{
		if(A[i]==-1)
			continue;
		Tmp[++top]=A[i];
	}
	
	if(top==0)
		return;
	
	qsort(Tmp+1,top,sizeof(Tmp[0]),cmp);
	
	for (int i=1;i<top;i++)
		cout<<Tmp[i]<<" ";
	
	cout<<Tmp[top]<<endl;

	return;
}

int main()
{
	freopen("ghillie.in","r",stdin);
	freopen("ghillie.out","w",stdout);
	init();
	works();
	return 0;
}