牛客PAT乙级(Basic Level)真题 - 1002 数字分类
数字分类 (20)
时间限制:1000ms 内存限制:32768KB 代码长度限制:100KB 判断程序: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
代码:
//牛客PAT 1002 数字分类
#include <stdio.h>
int main(int argc, char const *argv[])
{
int N, judge = 0, i = 0, j = 0, k = 0;
int A1 = 0, A2 = 0, A3 = 0, A5 = 0;
int count1 = 0, count2 =0, count3 = 0, count4 = 0, count5 = 0;
float A4;
int a4 = 0;
scanf("%d", &N);
int num[N]={0}, a2[N]={0};
for(int i = 0; i < N; i++)
{
scanf("%d", &num[i]);
}
for(int i = 0; i < N; i++)
{
judge = num[i] % 5;
switch (judge)
{
case 0:
{
if ((num[i]%2)==0)
{
A1 = A1 + num[i]; //计算A1
count1++;
}
break;
}
case 1:
{
a2[j] = num[i];
j++;
count2++;
break;
}
case 2:
{
A3++; //计算A3
count3++;
break;
}
case 3:
{
k++;
a4 = a4 + num[i];
count4++;
break;
}
case 4:
{
if(num[i] > A5)
A5 = num[i]; //计算A5
count5++;
break;
}
default:
break;
}
}
i = 0;
while(a2[i]) //计算A2
{
if((i%2)==0)
A2 = A2 + a2[i];
else
A2 = A2 - a2[i];
i++;
}
A4 = (float)a4 / k; //计算A4
(count1)?(printf("%d ", A1)):(printf("N "));
(count2)?(printf("%d ", A2)):(printf("N "));
(count3)?(printf("%d ", A3)):(printf("N "));
(count4)?(printf("%.1f ", A4)):(printf("N "));
(count5)?(printf("%d", A5)):(printf("N"));
return 0;
}
运行结果:
少一些功利主义的追求,多一些不为什么的坚持