5 条题解

  • 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;
        }
    }
    

    信息

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