1. 程式人生 > >PAT乙級1012 數字分類

PAT乙級1012 數字分類

1012. 數字分類 (20)

時間限制 100 ms
記憶體限制 65536 kB
程式碼長度限制 8000 B
判題程式 Standard 作者 CHEN, Yue

給定一系列正整數,請按要求對數字進行分類,並輸出以下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”。

輸入樣例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<stdio.h>
#define size 6
#include <string.h>
int main(void)
{
	

	int count[size];
	int sum[size];
	memset(count, 0, sizeof(count));
	memset(sum, 0, sizeof(sum));
	int num;
	scanf("%d", &num);
	int sign = 1;
	while (num--)
	{ 
		int a;
		scanf("%d", &a);
		if (a % 5 == 0 && a % 2 == 0)
		{
			sum[1] += a;
			count[1]=1;
		}
		else if (a%5 == 1)
		{
			count[2] = 1;
			a*= sign;
			sum[2] +=a;
			sign = -sign;
		}
		else if (a % 5 == 2)
		{
			count[3]=1;
			sum[3]++;
		}
		else if (a % 5 == 3)
		{
			sum[4] += a;
			count[4]++;
		}
		else if(a%5==4)
		{
			if (a > sum[5])
			{
				sum[5] = a;
			}
			count[5] = 1;
		}
	}
	


	int pause = 1;
	for (int i = 1; i < size; i++)
	{
		if (pause)
		{
			pause = 0;
		}
		else
		{
			printf(" ");
		}
		if (i == 4)
		{	
			if (count[4])
			{
				printf("%.1lf", sum[4] * 1.0 / count[4]);
			}
			else
			{
				printf("N");
			}
			continue;
		}
		if (count[i] == 0)
		{
			printf("N");
		}
		else
		{
			printf("%d", sum[i]);
		}
	}

	return 0;
}