《PTA——拼题A》之第1012题

题目介绍

给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:

  • A​1 = 能被 5 整除的数字中所有偶数的和;
  • A​2​ = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n1 − n​2​​ + n​3​​ − n​4​ ⋯;
  • A3​​ = 被 5 除后余 2 的数字的个数;
  • A​4​​ = 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;
  • A​5 = 被 5 除后余 4 的数字中最大数字。

输入格式:
每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数。数字间以空格分隔。

输出格式:
对给定的 N 个正整数,按题目要求计算 A​1​​ ~ A​5 并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。
若其中某一类数字不存在,则在相应位置输出 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

源代码

#include 
int main()
{
    int count;
    scanf("%d", &count);
    int array[5] = {0};
    int num, temp, count3 = 0, flag1 = 0;
    for(int i = 1; i <= count; i++){
        scanf("%d",&num);
        temp = num % 5;
        if(temp == 0 && num % 2 == 0) { array[0] += num; }  //  因为给出的都是正整数,故array[0]等于0才说明该类不存在
        if(temp == 1) {
            ++flag1;
            array[1] += ((flag1 % 2 != 0) ? num : (-1 * num));
        } //  奇数项满足的为正,偶数项满足的为负,flag1为奇偶判断变量
        if(temp == 2){  array[2]++; } //  array[2]不为0说明有满足该分类的num
        if(temp == 3){  count3++; array[3] += num;  } //  count3不为0说明有满足该分类的num
        if(temp == 4){  if(num > array[4]) array[4] = num;  }
    }
    if(array[0])  printf("%d ", array[0]);  else printf("%c ",'N');
    if(flag1)   printf("%d ", array[1]);  else printf("%c ",'N');
    if(array[2])  printf("%d ", array[2]);  else printf("%c ",'N');
    if(count3)  printf("%.1f ", 1.0 * array[3] / count3);   else printf("%c ",'N');
    if(array[4])  printf("%d", array[4]); else printf("%c",'N');
    return 0;
}

你可能感兴趣的:(PTA)