6 条题解
-
1lichengjun LV 10 @ 2023-4-15 14:17:16
#include<iostream> #include<algorithm> using namespace std; int n; int cz(int n,bool m){ int k; int a[]={n/1000,n/100%10,n/10%10,n%10}; sort(a,a+4); if(!m)k=a[0]*1000+a[1]*100+a[2]*10+a[3];//如果m为false,返回最小数 else k=a[3]*1000+a[2]*100+a[1]*10+a[0];//否则输出最大数 return k; } int main(){ cin>>n; while(n!=6174){ int a=cz(n,1),b=cz(n,0); cout<<a<<"-"<<b<<"="<<a-b<<endl; n=a-b; } return 0; }
-
02024-10-18 18:01:33@
#include <iostream> #include <algorithm> #include <cstring> using namespace std;
int n,a[6],b[6];
bool cmp(int x,int y) { return x > y; }
int main() { cin >> n; while(n != 6174) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); int num = n,sum = 0; n = 0; for(int i = 1;num != 0;i++) { a[i] = num%10; b[i] = num%10; num /= 10; } sort(a+1,a+5,cmp); sort(b+1,b+5); for (int i = 1;i <= 4;i++) { n = n10+a[i]; sum = sum10+b[i]; } cout << n << "-" << sum << "=" << n-sum << endl; n = n-sum; } return 0; }
-
02024-6-16 9:19:06@
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <stack> #include <queue> #include <map> #include <cstring> #include <iomanip> using namespace std; int n; int cz(int n,bool m){ int k; int a[]={n/1000,n/100%10,n/10%10,n%10}; sort(a,a+4); if(!m)k=a[0]*1000+a[1]*100+a[2]*10+a[3]; else k=a[3]*1000+a[2]*100+a[1]*10+a[0]; return k; } int main(){ cin>>n; while(n!=6174){ int a=cz(n,1),b=cz(n,0); cout<<a<<"-"<<b<<"="<<a-b<<endl; n=a-b; }
return 0;}
-
02024-6-16 9:18:12@
#include<bits/stdc++.h> using namespace std; int n; int cz(int n,bool m){ int k; int a[]={n/1000,n/100%10,n/10%10,n%10}; sort(a,a+4); if(!m)k=a[0]*1000+a[1]*100+a[2]*10+a[3]; else k=a[3]*1000+a[2]*100+a[1]*10+a[0]; return k; } int main(){ cin>>n; while(n!=6174){ int a=cz(n,1),b=cz(n,0); cout<<a<<"-"<<b<<"="<<a-b<<endl; n=a-b; } return 0; }
-
02024-1-7 21:33:55@
#include <iostream> #include <algorithm> #include <cstring> using namespace std; int main(){ int n; cin >> n; while(true){ char a[5], a2[5]; sprintf(a, "%d", n); //将数字转换为字符数组 sprintf(a2, "%d", n); sort(a, a+strlen(a), less<int>()); //重组最大数 sort(a2, a2+strlen(a2), greater<int>());//重组最小数 int m = atoi(a); //将字符串转换为int n = atoi(a2); int ans = n - m;//相减结果 printf("%d-%d=%d\n", n, m, ans); n = ans; if(ans == 6174) break; //遇到6174时结束循环 } return 0; }
-
02022-5-30 18:57:26@
/***************************************** 备注: ******************************************/ #include <queue> #include <math.h> #include <stack> #include <stdio.h> #include <iostream> #include <vector> #include <iomanip> #include <string.h> #include <algorithm> using namespace std; #define LL long long const int N = 1e5 + 10; const int INF = 0x3f3f3f3f; int main() { int n ; cin >> n; while(n != 6174) { int a[10]; int m = n; memset(a,0,sizeof(a)); while(m) { a[m%10]++; m/=10; } int ans =0; for(int i = 9 ; i >=0 ; i--) { for(int j= 0 ;j < a[i] ; j++) { ans = ans *10 + i; } } int sum = 0; for(int i = 0 ; i < 10 ; i++) { for(int j= 0 ;j < a[i] ; j++) { sum = sum *10 + i; } } cout <<ans << "-"<< sum << "=" << ans-sum<<endl; n = ans-sum; } return 0; }
- 1
信息
- ID
- 1014
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 252
- 已通过
- 115
- 上传者