题目描述
给定一系列正整数,请按要求对数字进行分类,并输出以下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
#include <iostream>
#include <string.h>
#include <iomanip>
using namespace std;
int main()
{
int n;
cin >> n;
int num;
int countA = 0;
int countB = 0;
int countC = 0;
int countD = 0;
int numD = 0;
int maxCount = 0xffffffff;
int flags = 1;
int m = n;
while (n--)
{
cin >> num;
if (num % 10 == 0)
{
countA += num;
}
if (num % 5 == 1)
{
if (flags == 1)
{
countB += num*flags;
flags = -1;
}
else
{
countB += num*flags;
flags = 1;
}
}
if (num % 5 == 2)
{
countC++;
}
if (num % 5 == 3)
{
countD += num;
numD++;
}
if (num % 5 == 4)
{
if (maxCount < num)
{
maxCount = num;
}
}
}
if (countA == 0)
{
cout << "N" << " ";
}
else
{
cout << countA << " ";
}
if (countB == 0)
{
cout << "N" << " ";
}
else
cout << countB << " ";
if (countC == 0)
{
cout << "N" << " ";
}
else
cout << countC << " ";
if (countD == 0)
{
cout << "N" << " ";
}
else
cout << setiosflags(ios::fixed) << setprecision(1) << (double)countD / numD << " ";
if (maxCount == 0xffffffff)
{
cout << "N" <<endl;
}
else
{
cout << maxCount << endl;
}
return 0;
}