4 条题解
-
0liangzhekai LV 6 @ 2024-9-22 17:01:27
#include<bits/stdc++.h> using namespace std; int c; long long a[201],m,b[201],mb; long long gen(int x,int y) { long long can=0; while(x>0) { can=can+pow(x%10,y+1); x/=10; } return can; } int main() { scanf("%d",&c); int tmp; while(scanf("%d",&tmp)!=EOF) { if(tmp==-1) break; a[++m]=tmp; } sort(a+1,a+1+m); for(int i=1;i<=c;i++) { mb=0; for(int j=1;j<=m;j++) if(a[j]!=0) b[++mb]=gen(a[j],i); for(int j=1;j<=mb;j++) for(int k=1;k<=m;k++) if(b[j]==a[k]) a[k]=-1; } for(int i=1;i<=m;i++) if(a[i]!=-1) printf("%lld ",a[i]); return 0; }
-
02024-5-24 18:32:23@
#include<bits/stdc++.h> using namespace std; const int N = 1e5 + 10; int num[N]; int main(){ int n; cin>>n; int x; while(cin>>x) num[x] = 1; for(int i=2;i<=n+1;i++) { for(int j=1;j<=255;j++) { if(num[j]==1||num[j]==i) { int sum = 0,x = j; while(x) { sum += pow(x%10,i); x/=10; } if(sum < 300&&num[sum]==1) { num[sum]=i; } } } } for(int i = 1;i<=255;i++) { if(num[i] == 1) cout<<i<<" "; } return 0; }
-
02023-1-14 19:33:44@
#include<bits/stdc++.h> using namespace std; int mypow(int n, int lun)//按照规则平方 { int sum = 0; while (n) { int t = n % 10; sum += pow(t, lun); n /= 10; } return sum; } struct ac { int id;//编号 int panduan;//判断是否淘汰 0淘汰 int hou;//编号计算之后存放 }a[1000]; int main() { int n; while (cin >> n)//轮数 { int t = 0; while (cin >> a[t].id)//输入编号 a[t++].panduan = 1;//判断先置1 表示不出局 for (int i = 1;i <= n;i++)//进行几轮操作 { for (int j = 0;j < t;j++) if (a[j].panduan)//判断是否出局 a[j].hou = mypow(a[j].id, i + 1);//平方运算 for (int j = 0;j < t;j++) for (int q = 0;q < t;q++) if (a[j].id == a[q].hou && a[j].panduan) a[j].panduan = 0;//出局 } int b[10000], q = 0; for (int i = 0;i < t;i++) if (a[i].panduan) b[q++] = a[i].id; sort(b, b + q);//从小到大排序 for (int i = 0;i < q;i++) cout << b[i] << " "; cout << endl; } }
-
-22023-5-25 22:47:36@
#include<bits/stdc++.h> using namespace std; int c; long long a[201],m,b[201],mb; long long gen(int x,int y) { long long can=0; while(x>0) { can=can+pow(x%10,y+1); x/=10; } return can; } int main() { scanf("%d",&c); int tmp; while(scanf("%d",&tmp)!=EOF) { if(tmp==-1) break; a[++m]=tmp; } sort(a+1,a+1+m); for(int i=1;i<=c;i++) { mb=0; for(int j=1;j<=m;j++) if(a[j]!=0) b[++mb]=gen(a[j],i); for(int j=1;j<=mb;j++) for(int k=1;k<=m;k++) if(b[j]==a[k]) a[k]=-1; } for(int i=1;i<=m;i++) if(a[i]!=-1) printf("%lld ",a[i]); return 0; }
- 1
信息
- ID
- 1002
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 420
- 已通过
- 140
- 上传者