PAT B1012 -- 数字分类

    之前一直忙着准备3月18号的PAT乙级考试,所以CSDN博客一直没有更新,现在把做过的真题代码贴出来一下。

    这是数字分类题,题目描述大致是这样的:


    在一行中先输入一个正整数N,随后给出N个不超过1000的正整数,要分成如下的数字:

    A1:能被5整除的数字中所有偶数的和;

    A2:能被5整除后余1的数字交错求和,eg.n1-n2+n3-n4...;

    A3:被5除后余2的数字个数;

    A4:被5除后余3数字的平均数,精确到小数点后面1位;

    A5:被5除后余4的数字中的最大数字

    输出A1~A5,空格分隔,如果Ai(i=1~5)数字不存在输入N


题目要求的输入输出如下:

实际运行结果如下:


代码如下:

#include <iostream>
#include <iomanip> 

using namespace std;

int main()
{
	int n, num;

	while (cin >> n)
	{
		getchar();
		if (n > 1000)
		{
			return -1;
		}
		int A1 = 0, A2 = 0, A3 = 0, A4 = 0, A5 = 0;
		int A22 = 0;//奇偶计数器
		int A44 = 0;//计算平均数计数器
		for (int i = 0; i < n; i++)
		{
			cin >> num;
			getchar();
			//A1是10的倍数
			if (num % 10 == 0)
			{
				A1 += num;
			}
			//A2+num1-num2+num3...
			if (num % 5 == 1)
			{
				A22++;
				if (A22 % 2 == 1)
				{
					A2 += num;
				}
				else
				{
					A2 -= num;
				}
			}
			//A3
			if (num % 5 == 2)
			{
				A3++;
			}
			//A4
			if (num % 5 == 3)
			{
				A4 += num;
				A44++;
			}
			//A5
			if (num % 5 == 4)
			{
				if (num > A5)
				{
					A5 = num;
				}
			}

		}

		if (A1) 
		{
			cout << A1 <<" ";
		}
		else 
		{
			cout << "N ";
		}

		if (A2)
		{
			cout << A2 << " ";
		}
		else
		{
			cout << "N ";
		}

		if (A3)
		{
			cout << A3 << " ";
		}
		else
		{
			cout << "N ";
		}

		if (A44)
		{
			float a = (float)A4 / A44;
			cout.setf(ios::fixed);
			cout << fixed << setprecision(1) << a << " ";
		}
		else
		{
			cout << "N ";
		}

		if (A5)
		{
			cout << A5 << endl;
		}
		else
		{
			cout << "N" << endl;
		}
	}
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值