PAT乙级1064. 朋友数(C语言)

PAT乙级真题题解目录


/* 将朋友证号作为数组下标 */
#include 

int main() {
    int N, isFriendId[37] = {0}, cnt = 0; // isFriendId 记录是否为朋友数(数字 < 10^4 则朋友数最大为36)
    scanf("%d", &N);
    for (int i = 0; i < N; i++) {
        int num, sum = 0;
        scanf("%d", &num); 
        while(num != 0) {
            sum += num % 10;
            num /= 10;
        }
        if(!isFriendId[sum]) {//如果该朋友证号还没有 
            isFriendId[sum] = 1;//标记 
            cnt++;//记录不同朋友证号的数量 
        } 
    }
    printf("%d\n", cnt);
    for (int i = 1; cnt > 0 && i < 37; i++) {
        if (isFriendId[i]) {
            printf("%d", i);
            if (cnt-- != 1) {
                printf(" ");
            }
        }
    }
    printf("\n");
    return 0;
}

你可能感兴趣的:(PAT乙级真题)