zoukankan      html  css  js  c++  java
  • 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 } 
  • 相关阅读:
    http 协议相关问题
    网卡中断及多队列
    Visual Studio Code 配置C/C++环境
    C++通用框架和库
    命令行的艺术
    NetScaler Logs Collection Guide
    C++性能榨汁机之无锁编程
    Codeforces 839E Mother of Dragons【__builtin_popcount()的使用】
    C/C++中__builtin_popcount()的使用及原理
    Codeforces 839D Winter is here【数学:容斥原理】
  • 原文地址:https://www.cnblogs.com/lolybj/p/6476917.html
Copyright © 2011-2022 走看看