记录编号 | 299855 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [金陵中学2007] 吉祥数 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | 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; } */