• PAT 1064. 朋友数(20)


    如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如123和51就是朋友数,因为1+2+3 = 5+1 = 6,而6就是它们的朋友证号。给定一些整数,要求你统计一下它们中有多少个不同的朋友证号。注意:我们默认一个整数自己是自己的朋友。

    输入格式:

    输入第一行给出正整数N。随后一行给出N个正整数,数字间以空格分隔。题目保证所有数字小于104

    输出格式:

    首先第一行输出给定数字中不同的朋友证号的个数;随后一行按递增顺序输出这些朋友证号,数字间隔一个空格,且行末不得有多余空格。

    输入样例:

    8
    123 899 51 998 27 33 36 12
    

    输出样例:

    4
    3 6 9 26
    
     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<stdlib.h>
     4 #include<ctype.h>
     5 #include<math.h>
     6 int cmp(const void *a,const void *b){
     7     return *(int*)a-*(int*)b;
     8 }
     9 int main(){
    10     int n;
    11     char a[10];
    12     int b[10010];
    13     int len;
    14     int sum;
    15     int h=0;
    16     int j;
    17     scanf("%d",&n);
    18     for(int i=0;i<n;i++){
    19         scanf("%s",a);
    20         sum = 0;
    21         len = strlen(a);
    22         for(j=0;j<len;j++){
    23             sum = sum+(a[j]-'0');
    24         }
    25         for(j=0;j<h;j++){
    26             if(sum==b[j]){
    27                 break;
    28             }
    29         }
    30         if(j==h){
    31             b[h++] = sum;
    32         }
    33         
    34     }
    35     qsort(b,h,sizeof(int),cmp);
    36     printf("%d
    ",h);
    37     for(int i=0;i<h;i++){
    38         if(!i)
    39             printf("%d",b[i]);
    40         else
    41             printf(" %d",b[i]);
    42     }
    43      
    44 } 
  • 相关阅读:
    第十周作业
    第九周编程作业与总结
    第八周编程作业及总结
    第七周编程总结
    第五周课程总结&试验报告(三)
    第四周课程总结&试验报告(二)
    第三周学习总结
    Java第二周学习总结
    2019年学习总结
    第十二周作业
  • 原文地址:https://www.cnblogs.com/lolybj/p/6476917.html
Copyright © 2020-2023  润新知