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

    https://pintia.cn/problem-sets/994805260223102976/problems/994805267416334336

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

    输入格式:

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

    输出格式:

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

    输入样例:

    8
    123 899 51 998 27 33 36 12
    

    输出样例:

    4
    3 6 9 26

    代码:
    #include <bits/stdc++.h>
    
    using namespace std;
    
    const int maxn=1e4+10;
    char a[maxn];
    int pys[maxn],num[maxn];
    
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=1; i<=n; i++)
        {
            scanf("%s",a);
            int len=strlen(a);
            for(int j=0; j<len; j++)
            {
                pys[i]+=a[j]-'0';
            }
            //cout<<pys[i]<<" ";
        }
        int cnt=1;
        num[1]=pys[1];
        for(int i=1; i<=n; i++)
        {
            int flag=0;
            for(int j=1; j<=cnt; j++)
            {
                if(pys[i]==num[j])
                {
                    flag=1;
                }
            }
            if(flag!=1)
                num[++cnt]=pys[i];
        }
        sort(num+1,num+1+cnt);
        printf("%d
    ",cnt);
        for(int i=1; i<=cnt; i++)
        {
            if(i!=cnt)
            printf("%d ",num[i]);
            else
            printf("%d",num[i]);
        }
        return 0;
    }
    

      

  • 相关阅读:
    bzoj3574[Hnoi2014]抄卡组
    bzoj3576[Hnoi2014]江南乐
    [GDKOI2016]小学生数学题
    bzoj3572[Hnoi2014]世界树
    bzoj3571[Hnoi2014]画框
    bzoj3573[Hnoi2014]米特运输
    指数循环节
    bzoj4013[HNOI2015]实验比较
    bzoj4012[HNOI2015]开店
    bzoj1095[ZJOI2007]Hide 捉迷藏
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/9301962.html
Copyright © 2011-2022 走看看