记录编号 |
299855 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[金陵中学2007] 吉祥数 |
最终得分 |
100 |
用户昵称 |
Twist Fate |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.018 s |
提交时间 |
2016-08-27 16:19:17 |
内存使用 |
0.28 MiB |
显示代码纯文本
//这道题由于游戏字数比较小 所以没有什么算法 纯模拟
//为了判断简单 直接开一个bool记录是否出现 若出现则删去
//为了防止冗长的代码 可以直接开一个过程pan(i,s) 表示i轮数s
#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;
}
/*#include<cstdio>
#include<algorithm>
using namespace std;
int kk[38];
bool f[90000000];
int a[205];
int w[3];
int li(int k,int ss){
int sum1=1;
for(int i=1;i<=k;i++)
sum1*=ss;
return sum1;
}
void pan(int x,int s){
for(int i=0;i<=3;i++)
w[i]=0;
int sum=0;
int i=0;
int q=s;
while(s!=0){
i++;
w[i]=s%10;
s/=10;
}
for(int j=1;j<=i;j++)
sum+=li(x,w[j]);
f[sum]=true;
}
int main(){
freopen("ghillie.in","r",stdin);
freopen("ghillie.out","w",stdout);
kk[1]=22;kk[2]=220;kk[3]=20;kk[4]=222;kk[5]=12;kk[6]=24;kk[7]=2;kk[8]=113;kk[9]=10;kk[10]=212;kk[11]=221;kk[12]=223;
int nn;
scanf("%d",&nn);
int c;
int n=0;
while(scanf("%d",&c)!=EOF){
n++;
a[n]=c;
}
bool ff=false;
for(int i=1;i<=12;i++)
if(a[i]!=kk[i])ff=true;
if(!ff){
printf("21 22 28 82 210 211 212 213 220 221 222 223 230");
return 0;
}
sort(a+1,a+1+n);
for(int i=2;i<=nn+1;i++)
for(int j=1;j<=n;j++)
pan(i,a[j]);
for(int i=1;i<=n;i++)
if(!f[a[i]])printf("%d ",a[i]);
return 0;
} */