给定一系列正整数,请按要求对数字进行分类,并输出以下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”。
#include <stdio.h> #include <stdlib.h> #include <string.h> int main () { int num,i,temp,count0=0,count1=0,count2=0,count3=0,count4=0; scanf("%d",&num); int * mode0=new int[num]; int * mode1=new int[num]; int * mode2=new int[num]; int * mode3=new int[num]; int * mode4=new int[num]; for(i=0;i<num;i++) { scanf("%d",&temp);//the current num switch (temp%5)//the mode num { case 0:mode0[count0++]=temp;break; case 1:mode1[count1++]=temp;break; case 2:mode2[count2++]=temp;break; case 3:mode3[count3++]=temp;break; case 4:mode4[count4++]=temp;break; } } int result0=0,result1=0,result2=0,result4=0; float result3=0.0f; // bool flag0,flag1,flag2,flag3,flag4; //A1// if(count0==0) printf("N ");//no num in mode0 else { for(i=0;i<count0;i++) if(mode0[i]%2==0) result0=result0+mode0[i]; if(result0==0) printf("N "); else printf("%d ",result0); } //A2/ if(count1==0) printf("N "); else { for(i=0;i<count1;i++) { if(i%2==0) result1=result1+mode1[i]; else result1=result1-mode1[i]; } printf("%d ",result1); } //A3/// if(count2==0) printf("N "); else printf("%d ",count2); //A4/// if(count3==0) printf("N "); else { for(i=0;i<count3;i++) result3=result3+mode3[i]; result3=result3/count3; printf("%.1f ",result3); } //A5// if(count4==0) printf("N"); else { result4=mode4[0]; for(i=1;i<count4;i++) if(mode4[i]>result4) result4=mode4[i]; printf("%d\n",result4); } system("pause"); return 0; }