6 条题解

  • 1
    @ 2023-12-12 15:56:19

    #include <stdio.h> int paixu(int num); int paixiao(int num); int main() { int n; scanf("%d",&n); while(n--) { int cum=0; int num,a,b; scanf("%d",&num); while(1) { b=paixu(num); a=paixiao(num); if(a-b==num) { cum++; printf("%d\n",cum); break; } num=a-b; cum++; }

    } return 0;

    } int paixu(int num) { int a[10]; int cont=0,total=1; while(num>0) { a[cont++]=num%10; num/=10; } for(int i=0;i<cont;i++) { for(int j=0;j<cont-1;j++) { int temp; if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp;//从小到大排序 } } } for(int i=0;i<cont;i++) { total=total10+a[i]; } return total; } int paixiao(int num) { int a[10]; int cont=0,total=1; while(num>0) { a[cont++]=num%10; num/=10; } for(int i=0;i<cont;i++) { for(int j=0;j<cont-1;j++) { int temp; if(a[j]<a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp;//从大到小排序 } } } for(int i=0;i<cont;i++) { total=total10+a[i]; } return total; }

    • 1
      @ 2023-11-18 16:58:52

      #include<stdio.h> int main() { int n,m,a,b,oi[4]; int i,j,count; scanf("%d", &n);

      while(n--) { scanf("%d", &m); count=0; while (m!= 6174) { oi[0] = m / 1000; oi[1] = m / 100 % 10; oi[2] = m / 10 % 10; oi[3] = m % 10; for (i = 0; i < 3; i++) { for (j = 0; j < 3 - i; j++) { if (oi[j] >oi[j + 1]) { int temp; temp = oi[j]; oi[j] = oi[j + 1]; oi[j + 1] = temp; } } } a = oi[3] * 1000 + oi[2] * 100 + oi[1] * 10 + oi[0]; b = oi[0] * 1000 + oi[1] * 100 + oi[2] * 10 + oi[3]; m=a-b; count++; } printf("%d\n", count+1); } return 0;

      }

      • @ 2023-11-19 16:58:58

        菜就多练,玩不起就别玩

    • 1
      @ 2023-9-25 20:33:53
      //经典的数字黑洞问题
      #include<stdio.h>
      int main()
      {
          int c;
          scanf("%d",&c);
          while(c--)
          {
              int a[4];
              int i,j,m,n,t,s,count=0;
              scanf("%d",&s);
              while(s!=6174)
              {
                  a[0]=s/1000;
                  a[1]=s/100%10;
                  a[2]=s/10%10;
                  a[3]=s%10;
                  for(i=0;i<3;i++)
                  {
                      for(j=i+1;j<4;j++)
                      {
                          if(a[j]>a[i])
                          {
                              t=a[j];
                              a[j]=a[i];
                              a[i]=t;
                          }
                      }
                  }
                   m=1000*a[0]+100*a[1]+10*a[2]+a[3];
                   n=1000*a[3]+100*a[2]+10*a[1]+a[0];
                   s=m-n;
                   count++;
              }
              printf("%d\n",count+1);
          }
          return 0;
      }
      
      • 0
        @ 2025-9-22 21:18:03
        #include<stdio.h>
        int main()
        {
            int n,i,a,j,temp,min,max,sum,z;
            char b[5];
            scanf("%d",&n);
            while(n--){
                sum=0;
                z=-1;
                scanf("%d",&a);
                if(a==6174){
                    printf("1\n");
                    break;
                }
                else{
                    while(1){
                    b[0]=a/1000;
                    b[1]=a/100%10;
                    b[2]=a/10%10;
                    b[3]=a%10;
                    for(i=0;i<4;i++){
                        for(j=i+1;j<4;j++){
                            if(b[i]>b[j]){
                                temp=b[i];
                                b[i]=b[j];
                                b[j]=temp;
                        }
                    }
                }max=b[3]*1000+b[2]*100+b[1]*10+b[0];
                min=b[0]*1000+b[1]*100+b[2]*10+b[3];
                a=max-min;
                sum++;
                if(a==z){
                    break;
                }z=a;
                }printf("%d\n",sum);
                }   
            }       
            return 0;
        }
        
        • 0
          @ 2025-1-10 20:48:11
          #include<stdio.h>
          #include<iostream>
          #include<algorithm>
          using namespace std;
          const int N=100;
          int f[N];
          int main()
          {
          	int n;
          	cin>>n;
          	while(n--)
          	{
          		int count=0;
          		int m;
          		cin>>m;
          		int q=100;
          		while(q--)
          		{
          			int t=m;
          			int sum=0,sum1=0;
          			f[0]=m%10;
          			f[1]=m/10%10;
          		    f[2]=m/100%10;
          		    f[3]=m/1000%10;
          		    sort(f,f+4);
          		    sum=f[0]+f[1]*10+f[2]*100+f[3]*1000;
          		    sum1=f[0]*1000+f[1]*100+f[2]*10+f[3];
          		    m=sum-sum1;
          		    count++;
          		    if(m==t)
          		    {
          		    	cout<<count<<endl;
          		    	break;
          			}
          		}
          	}
          	return 0;
          }
          真的烦死👀️ 
          
          • 0
            @ 2023-9-12 13:17:01

            避免数位排序的方法:桶排。


            #include <cstdio>
            #include <cstring>
            
            int digit[10];
            
            int process(int m){
                memset(digit, 0, sizeof(digit));
                ++ digit[m / 1000];
                ++ digit[(m % 1000) / 100];
                ++ digit[(m % 100) / 10];
                ++ digit[m % 10];
                int big = 0, small = 0, timer = 1;
                for(int i = 0; i <= 9; ++ i){
                    while(digit[i]){
                        big += i * timer;
                        small += i * 1000 / timer;
                        timer *= 10;
                        -- digit[i];
                    }
                }
                return big - small;
            }
            
            int main(){
                int n, i;
                int num, cnt = 0;
                scanf("%d", &n);
                for(i = 1; i <= n; ++ i){
                    scanf("%d", &num);
                    while(num != 6174){
                        num = process(num);
                        ++ cnt;
                    }
                    printf("%d\n", cnt + 1);
                    cnt = 0;
                }
            }
            
            • 1

            信息

            ID
            140
            时间
            1000ms
            内存
            128MiB
            难度
            6
            标签
            (无)
            递交数
            850
            已通过
            264
            上传者