top1编程
← 返回题目
题解

【基础】数字黑洞

3 条题解

  • 0
    @ 2026-7-29 20:24:15
    #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
      @ 2026-7-29 0:06:25
      #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
        @ 2026-7-28 22:09:59
        #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