PAT乙级1091 N-自守数 (15 分),我写的为什么只能判断第一行不继续走了

#include <stdio.h>
int main() {
    int x = 0;
    int number[21]{0};
    int wei[21]{ 0 };
    scanf("%d", &x);
    for (int cnt = 0; x > 0; x--) {
        scanf("%d", &number[cnt]);
            cnt++;
    }
    int i = 0;
    int numbercopy[21] = {0};
    for (int i = 0; number[i] > 0; i++) {
        numbercopy[i] = number[i];
    }
    for (int cnt = 0; numbercopy[cnt] > 0; cnt++) {
        while (numbercopy[cnt] > 0) {
            numbercopy[cnt] /= 10;
            i++;
        }
        wei[cnt] = i;
    }
    int n=1, nk2=0;
    int NO = 1;
    for (int cnt = 0; number[cnt] > 0; cnt++) {
        for (i = 1; wei[cnt] > 0; wei[cnt]--) {
            i *= 10;
        }
        for (n=1; n < 10; n++) {
            nk2 = number[cnt] * number[cnt] * n;
            if (nk2 % i == number[cnt]) {
                printf("%d %d\n", n, nk2);
                NO = 0;
                break;
            }
        }
        if (number[cnt] > 0 && NO == 1) { printf("No\n"); }
    }
return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^