https://www.nowcoder.com/pat/6/problem/4078ide
給定一系列正整數,請按要求對數字進行分類,並輸出如下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; }