4 条题解

  • 1
    @ 2026-7-21 21:12:13

    /***************************************** 备注: ******************************************/ #include #include <math.h> #include #include <stdio.h> #include #include #include #include <string.h> #include 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; }

    • 0
      @ 2022-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
        @ 2024-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;
        }
        
        • -1
          @ 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;
          }
          
          • 1

          信息

          ID
          1014
          时间
          1000ms
          内存
          128MiB
          难度
          4
          标签
          递交数
          385
          已通过
          181
          上传者