写了这么久,测试的时候都对,哪错了?
查看原帖
写了这么久,测试的时候都对,哪错了?
897873
lwthree楼主2023/10/27 20:48
#include <bits/stdc++.h>
using namespace std;

int check(int x, int* cycle, int length){
    for (int i=1;i<=length;i++){
        if (x==cycle[i]) return i;
    }
    return 0;
}
void output(int pos, int* cycle, int length){
    for (int i=pos;i<=length;i++){
        cout<<cycle[i]<<' ';
    }
    puts("");
}

int main(){
    int n;
    while (cin>>n){
        int i=0;
        int cycle[50];
        memset(cycle,0,sizeof(cycle));
        cycle[++i]=n;
        while (true){
            int k[15];
            memset(k,0,sizeof(k));
            while (n){
                k[n%10]++;
                n/=10;        
            }
            int newnsmall=0, newnbig=0;
            for (int i=0;i<=9;i++){
                for (int j=1;j<=k[i];j++){
                    newnsmall+=i;
                    newnsmall*=10;
                }
            }
            newnsmall/=10;
            for (int i=9;i>=0;i--){
                for (int j=1;j<=k[i];j++){
                    newnbig+=i;
                    newnbig*=10;
                }
            }
            newnbig/=10;
            int newn=newnbig-newnsmall;
            if (check(newn, cycle, i)) {
                output(check(newn, cycle, i), cycle, i);
                break;
            }
            else {
                cycle[++i]=newn;
                n=newn;
            }
        }       
    }
    return 0;
}
2023/10/27 20:48
加载中...