給定一系列正整數,請按要求對數字進行分類,

題目鏈接

https://www.nowcoder.com/pat/6/problem/4078

題目描述

給定一系列正整數,請按要求對數字進行分類,並輸出以下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

參考代碼:

#include<stdio.h>
#include<stdlib.h>
#define MAX(a,b) (a>b)?a:b
int main()
{
    int sum=0,sum1=0,sum1_flag=1,num2=0,sum3=0,sum3_num=0,max4=0,num,data;
    scanf("%d",&num);
    for(;num>0;num--){
        scanf("%d",&data);
        switch(data%5){
        case 0:
            if(!(data%2))
              sum+=data;
            break;
        case 1:
            sum1+=sum1_flag*data;
            sum1_flag*=-1;
            break;
        case 2:
            num2++;
            break;
        case 3:
            sum3+=data;
            sum3_num++;
            break;
        case 4:
            max4=MAX(max4,data);
            break;
        default :
            break;
        }
    }
    if(sum>0&&sum1>0&&num2>0&&sum3_num>0&&max4>0)
        printf("%d %d %d %.1f %d\n",sum,sum1,num2,1.0*sum3/sum3_num,max4);
    else{
        if(sum!=0)
            printf("%d ",sum);
         else
            printf("N ");
        if(sum1!=0)
            printf("%d ",sum1);
         else
            printf("N ");
        if(num2!=0)
            printf("%d ",num2);
         else
            printf("N ");
        if(sum3!=0)
            printf("%.1f ",1.0*sum3/sum3_num);
         else
            printf("N ");
        if(max4!=0)
            printf("%d",max4);
         else
            printf("N");
    }
    return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章