比赛 |
20111111 |
评测结果 |
AAAAAAAAAA |
题目名称 |
吉祥数 |
最终得分 |
100 |
用户昵称 |
苏轼 |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2011-11-11 10:26:00 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
int n,q[201],w[201];
int p=0;
int f[10][9]={{0},{1,1,1,1,1,1,1,1,1},
{1,2,4,8,16,32,64,128,256},
{1,3,9,27,81,243,729,2187,6561},
{1,4,16,64,256,1024,4096,16384,65536},
{1,5,25,125,625,3125,15625,78125,390625},
{1,6,36,216,1296,7776,46656,279936,1679616},
{1,7,49,343,2401,16807,117649,823543,5764801},
{1,8,64,512,4096,32768,262144,2097152,16777216},
{1,9,81,729,6561,59049,531441,4782969,43046721}};
int cmp(const void *a,const void *b);
bool check(int x);
int find(int x,int y);
int main()
{
freopen ("ghillie.in","r",stdin);
freopen ("ghillie.out","w",stdout);
scanf("%d",&n);
while (cin>>q[p])
{
p++;
}
for (int i=1;i<=n;i++)
{
for (int j=0;j<p;j++)
{
w[j]=find(q[j],i);
}
for (int k=0;k<p;k++)
{
if (check(q[k]))
{
q[k]=-1;
}
}
for (int u=0;u<p;u++)
{
if (q[u]==-1)
{
for (int y=u;y<p-1;y++)
{
q[y]=q[y+1];
}
p--;
u--;
}
}
}
qsort(q,p,sizeof(q[0]),cmp);
for (int i=0;i<p;i++)
{
cout<<q[i]<<' ';
}
return 0;
}
int find(int x,int y)
{
int a,b,temp=0;
a=x;
b=10;
while (a>0)
{
temp+=f[(a%10)][y+1];
a=a/10;
}
return temp;
}
bool check(int x)
{
for (int i=0;i<p;i++)
{
if (x==w[i])
{
return true;
}
}
return false;
}
int cmp(const void *a,const void *b)
{
return *(int *)a - *(int *)b;
}