给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:
输入格式:
每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N,随后给出N个不超过1000的待分类的正整数。数字间以空格分隔。
输出格式:
对给定的N个正整数,按题目要求计算A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。
若其中某一类数字不存在,则在相应位置输出“N”。
输入样例1:13 1 2 3 4 5 6 7 8 9 10 20 16 18输出样例1:
30 11 2 9.7 9输入样例2:
8 1 2 4 5 6 7 9 16输出样例2:
N 11 2 N 9
这道题按照题意可分为5种情况,分别对应题目中的A1,A2,A3,A4,A5,我是对每一个输入进行分类,用getchar()读取空格,因为每一种情况都要被5除,因此对得出的余数进行讨论,总的来说,还是比较简单的。
代码如下:
#include"stdio.h"
int main()
{
int sum[5]={0},n,Sum,i;
int isexist[5]={0};
float A3;
scanf("%d",&n);
for (i=0;i<n;i++)
{
getchar();
scanf("%d",&Sum);
switch (Sum%5)
{
case 0:if (Sum%2==0)
{
isexist[0]=1;sum[0]+=Sum;
}break;
case 1: isexist[1]++;
if (isexist[1]%2!=0)
{
sum[1]+=Sum;
}
else
{
sum[1]-=Sum;
}break;
case 2:isexist[2]=1;sum[2]++;break;
case 3:isexist[3]++;sum[3]+=Sum;break;
case 4:isexist[4]=1;
if (Sum>sum[4])
{
sum[4]=Sum;
}
}
}
for(i=0;i<5;i++)
{
if (isexist[i]>0)
{
if (i==3)
{
A3=float(sum[i])/isexist[i];printf("%0.1f",A3);
}
else
{
printf("%d",sum[i]);
}
}
else
{
printf("N");
}
if (i!=4)
{
printf(" ");
}
}
return 0;
}