数字分类 (20)

代码

运行结果


数字分类 (20)

时间限制:1000ms 内存限制:32768KB 代码长度限制:100KB 判断程序:Standard

 

题目描述:

给定一系列正整数,请按要求对数字进行分类,并输出以下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

 

输出例子:

30 11 2 9.7 9


代码:

//牛客PAT 1002 数字分类
#include <stdio.h>
int main(int argc, char const *argv[])
{
    int N, judge = 0, i = 0, j = 0, k = 0;
    int A1 = 0, A2 = 0, A3 = 0, A5 = 0;
    int count1 = 0, count2 =0, count3 = 0, count4 = 0, count5 = 0;
    float A4;
    int a4 = 0;

    scanf("%d", &N);
    int num[N]={0}, a2[N]={0};
    
    for(int i = 0; i < N; i++)
    {
        scanf("%d", &num[i]);
    }
    
    for(int i = 0; i < N; i++)
    {
        judge = num[i] % 5;
        switch (judge)
        {
            case 0:
                {
                    if ((num[i]%2)==0)
                    {
                        A1 = A1 + num[i];       //计算A1
                        count1++;
                    }
                    break;
                }
            case 1:
                {
                    a2[j] = num[i];
                    j++;
                    count2++;
                    break;
                }
            case 2:
                {
                    A3++;       //计算A3
                    count3++;
                    break;
                }
            case 3:
                {
                    k++;
                    a4 = a4 + num[i];
                    count4++;
                    break;
                }
            case 4:
                {
                    if(num[i] > A5)
                    A5 = num[i];        //计算A5
                    count5++;
                    break;
                }
            default:
                break;
        }
    }
    
    i = 0;
    while(a2[i])        //计算A2
    {
        if((i%2)==0)
            A2 = A2 + a2[i];
        else
            A2 = A2 - a2[i];
        i++;
    }

    A4 = (float)a4 / k;     //计算A4

    (count1)?(printf("%d ", A1)):(printf("N "));
    (count2)?(printf("%d ", A2)):(printf("N "));
    (count3)?(printf("%d ", A3)):(printf("N "));
    (count4)?(printf("%.1f ", A4)):(printf("N "));
    (count5)?(printf("%d", A5)):(printf("N"));
    return 0;
}

运行结果: