Codeup-数字分类 (20)

题目描述

给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:

  • A1 = 能被5整除的数字中所有偶数的和;
  • A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;
  • A3 = 被5除后余2的数字的个数;
  • A4 = 被5除后余3的数字的平均数,精确到小数点后1位;
  • A5 = 被5除后余4的数字中最大数字。

输入

每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N,随后给出N个不超过1000的待分类的正整数。数字间以空格分隔。

输出

对给定的N个正整数,按题目要求计算A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。

若其中某一类数字不存在,则在相应位置输出“N”。

样例输入

13 1 2 3 4 5 6 7 8 9 10 20 16 18
8 1 2 4 5 6 7 9 16

样例输出

30 11 2 9.7 9
N 11 2 N 9

刚拿到这题,就是觉得有点麻烦,但是做起来很简单,但是提交到了第6次才正确,反复找原因,最后还是对题目的分析不准确,我起初是采用sum1,sum2,sum3,sum4和maxn来统计和,但是对于sum3,sum4和maxn,他们如果存在,一定是大于0的值,所以可以采用是否大于0来判断是否存在,但是对于sum1和sum2来说,存在着等于0的情况,比如对于sum1,0便是符合条件的,对于sum2,如果只输入两个数且相同,则结果为0,但是也是存在的,所以要额外设置两个标志来记录存在的个数。以后想题目还是要严谨呀!!

代码:

#include <cstdio>

int main()
{
    int n,i,x;
    while(scanf("%d",&n)!=EOF)
    {
        int sign=1;
        int sum1=0,sum2=0,sum3=0,maxn=0,temp=0;
        int temp1=0,temp2=0;
        double sum4=0;
        for(i=0;i<n;i++)
        {
            scanf("%d",&x);
            if(x%5==0)
            {
                if(x%2==0)
                {
                    sum1+=x;
                    temp1++;
                }
            }
            else if(x%5==1)
            {
                sum2+=x*sign;
                sign=-sign;
                temp2++;
            }
            else if(x%5==2)
            {
                sum3++;
            }
            else if(x%5==3)
            {
                sum4+=x;
                temp++;
            }
            else if(x%5==4)
            {
                if(x>maxn)
                    maxn=x;
            }
        }
        if(temp1>0)
            printf("%d ",sum1);
        else
            printf("N ");
        if(temp2>0)
            printf("%d ",sum2);
        else
            printf("N ");
        if(sum3>0)
            printf("%d ",sum3);
        else
            printf("N ");
        if(sum4>0)
            printf("%.1f ",sum4/temp);
        else
            printf("N ");
        if(maxn>0)
            printf("%d\n",maxn);
        else
            printf("N\n");
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Zizizi9898/article/details/88778351