zoukankan      html  css  js  c++  java
  • PAT-乙级-1064 朋友数

    如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。

    例如 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




    分析:
      建立一个数组,存储朋友证号,初始化为0
      依次计算每个输入的朋友证号,在对应的位置加1
      输出数组中非零的个数和非零的下标即可



     1 //c
     2 
     3 #include <stdio.h>
     4 #define MAX 40
     5 
     6 int main(){
     7   int n,x,arr[MAX]={0};
     8   scanf("%d",&n);
     9   while(n--){
    10     scanf("%d",&x);
    11     int sum=0;
    12     while(x){
    13       sum+=(x%10);
    14       x/=10;
    15     }
    16     arr[sum]++;
    17   }
    18   int res=0;
    19   for(int i=0;i<MAX;i++){
    20     if(arr[i])
    21       res++;
    22   }
    23   printf("%d
    ",res);
    24   int f=0;
    25   for(int i=0;i<MAX;i++){
    26     if(arr[i]){
    27       if(f)
    28         printf(" ");
    29       printf("%d",i);
    30       f=1;
    31     }
    32   }
    33   return 0;
    34 }
     
  • 相关阅读:
    Can you answer these queries? (线段树
    小a的排列(牛客)
    Count the Colors 线段树
    Mayor's posters (离散化线段树+对lazy的理解)
    出题人的手环(求逆序对数)
    [BZOJ2251/BJWC2010]外星联络
    [ZJOI2007]报表统计
    [JLOI2016]圆的异或并
    [ZJOI2008]无序运动Movement
    [NOI2011]阿狸的打字机
  • 原文地址:https://www.cnblogs.com/tenjl-exv/p/10087202.html
Copyright © 2011-2022 走看看