3 条题解

  • 1
    @ 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;
    }
    
    • 0
      @ 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;
      }
      
      • 0
        @ 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
        标签
        递交数
        365
        已通过
        165
        上传者