PAT 乙级 1002 数字分类

给定一系列正整数,请按要求对数字进行分类,并输出以下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”。
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{

	int N;
	cin >> N;
	int a[1000];
	memset(a, 0, sizeof(a));
	int i = 0;
	int A1 = 0;
	int A2 = 0;
	int A3 = 0;
	double A4 = 0;
	int A5 = 0;
	int flag = 1;
	int count_A2 = 0;//计数,判断这一类数字是否存在
	int count_A3 = 0;
	int count_A4 = 0;

	while (N--)
	{
		cin >> a[i];
		
		switch (a[i] % 5)
		{

		case 0:
			if (a[i] % 2 == 0)
			{
				A1 = A1 + a[i];
			} break;
		case 1:
			A2 = A2 + flag * a[i];
			flag = flag * (-1);
			count_A2++; break;
		case 2:
			A3++;
			count_A3++; break;
		case 3:
			A4 = A4 + a[i];
			count_A4++; break;
		case 4:
			if (A5<a[i])
			{
				A5 = a[i];
			} break;
		}
		i++;
	}
	(A1>0) ? (cout << A1<< " ") :(cout << "N ");
	(count_A2>0) ? (cout << A2 << " ") :(cout << "N ");
	(count_A3>0) ? (cout << count_A3 << " ") : (cout << "N ");
	(count_A4>0) ? (cout << fixed << setprecision(1) << A4 / count_A4 << " ") : (cout << "N ");//定点式输出小数点后一位
	(A5>0) ? (cout << A5 ) : (cout << "N");//末尾无空格
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_38258767/article/details/81142502