题解
【基础】数字黑洞
3 条题解
-
0
#include<bits/stdc++.h> using namespace std; int a[5]; int main(){ int n; cin >> n; while (n != 6174) { for (int i = 0; i < 4; i++) { a[i] = n % 10; n /= 10; } sort(a, a + 4); int min = 0, max = 0; for (int i = 0; i < 4; i++) { min = a[i] + min * 10; } for (int i = 3; i >= 0; i--) { max = a[i] + max * 10; } n = max - min; cout << max << "-" << min << "=" << n << endl; } return 0; } -
0
#include<bits/stdc++.h> using namespace std; int a[5]; int main(){ int n; cin >> n; while (n != 6174) { for (int i = 0; i < 4; i++) { a[i] = n % 10; n /= 10; } sort(a, a + 4); int min = 0, max = 0; for (int i = 0; i < 4; i++) { min = a[i] + min * 10; } for (int i = 3; i >= 0; i--) { max = a[i] + max * 10; } n = max - min; cout << max << "-" << min << "=" << n << endl; } return 0; } -
0
#include<iostream> #include<algorithm> using namespace std; int main() { int n; cin >> n; int w=n; while (w>0){ int w = n; int a[4]; //用a数组来存储n的各个位 a[0] = n / 1000; a[1] = (n / 100) % 10; a[2] = (n / 10) % 10; a[3] = n % 10; sort(a, a + 4); int x = a[0];//x存储最小的组合 int y = a[3];//y存储最大的组合 for (int i = 1; i < 4; i++) { x = x * 10 + a[i]; y = y * 10 + a[3 - i]; } cout<<y<<"-"<<x<<"="<<y-x<<endl; n = y - x; if (n == 6174) { break; } } return 0; }
- 1