数字分类 (20)
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 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
代码
#include <stdio.h>
int main(void)
{
int T = 0;
scanf("%d",&T);
int j = 0;
int arr[T];
for(;j<T;j++)
{
scanf("%d",&arr[j]);
}
int a2sig = 1;
int a1sum = 0,a1num = 0,a2sum =0,a2num = 0,a3num =0,a4sum = 0,a4num = 0,a5num = 0,a5max = 0;
double a4ave = 0.0;
for(int i = 0;i<j;i++)
{
if(arr[i]%5==0&&arr[i]%2==0)
{
a1sum+=arr[i];
a1num++;
}
if(arr[i]%5==1)
{
a2sum=a2sum+arr[i]*a2sig;
a2num++;
a2sig =-1*a2sig;
}
if(arr[i]%5==2)
{
a3num++;
}
if(arr[i]%5==3)
{
a4sum+=arr[i];
a4num++;
double a = (double)a4sum;
double b = (double)a4num;
a4ave= a/b;
}
if(arr[i]%5==4)
{
if(arr[i]>a5max) a5max = arr[i];
a5num++;
}
}
if(a1num!=0)
printf("%d ",a1sum);
else printf("N ");
if(a2num!=0)
printf("%d ",a2sum);
else (printf("N "));
if(a3num!=0)
printf("%d ",a3num);
else printf("N ");
if(a4num!=0)
printf("%.1lf ",a4ave);
else printf("N ");
if(a5num!=0)
printf("%d",a5max);
else printf("N ");
}