• 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
    
     
     
     
     1 #include<stdio.h>
     2 #include<math.h>
     3 #include<string.h>
     4 #include<stdlib.h>
     5 int cmp(const void *p,const void *q)
     6 {
     7     int x=*(int *)p;
     8     int y=*(int *)q;
     9     if(x>y)
    10         return 1;
    11     else
    12         return -1;
    13     return 0;
    14 }
    15 int main()
    16 {
    17     int N;
    18     scanf("%d",&N);
    19     char num[5];
    20     int sumzu[N];
    21     for(int i=0;i<N;i++)
    22     {
    23         scanf(" %s",num);
    24         int sum=0;
    25         int len=strlen(num);
    26         for(int j=0;j<len;j++)
    27         {
    28             sum=sum+(num[j]-'0');
    29         }
    30         sumzu[i]=sum;
    31     }
    32     qsort(sumzu,N,sizeof(int),cmp);
    33       int sumzu1[N];
    34       int t=0;
    35     for(int i=0;i<N;i++)
    36     {
    37         for(int j=0;j<N;j++)
    38         {
    39           if(sumzu[i]==sumzu[j]&&j!=i&&sumzu[i]!=-9999)
    40           {
    41               sumzu[j]=-9999;
    42           }    
    43         }
    44         if(sumzu[i]!=-9999)
    45             sumzu1[t++]=sumzu[i];
    46     }
    47     printf("%d
    ",t);
    48     for(int i=0;i<t-1;i++)
    49         printf("%d ",sumzu1[i]);
    50     printf("%d
    ",sumzu1[t-1]);
    51     return 0;
    52 }
    大佬见笑,,
  • 相关阅读:
    RTOS内功修炼记(三)—— 内核到底是如何管理中断的?
    图片预览
    js 操作二进制文件
    javascript 引擎
    js 中逗号运行符号
    语法高亮组件reactsyntaxhighlighter
    域名
    下载文件
    二进制文件存储到本地
    react 代码编辑器reactace
  • 原文地址:https://www.cnblogs.com/xwl3109377858/p/10479667.html
Copyright © 2020-2023  润新知