1012. 数字分类(20)
给定一系列正整数,请按要求对数字进行分类,并输出以下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
分析:没什么难度,只要注意某一类数字不存在的情况就行了。还有保留一位小数可以用floor函数(一篇关于四舍五入的小技巧)题目太简单,就不写注释了~
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int N, a[1000];
void f1()
{
int sum = 0;
for (int i = 0; i < N; i++)
if (a[i] % 10 == 0)
sum += a[i];
if (sum)
cout << sum;
else
cout << "N";
cout << " ";
}
void f2()
{
int flag = 1;
int sum=0;
int count=0;
for (int i = 0; i < N; i++)
if (a[i] % 5 == 1)
{
if (flag % 2)
sum += a[i];
else
sum -= a[i];
flag++;
count++;
}
if (count)
cout << sum;
else
cout << "N";
cout << " ";
}
void f3()
{
int count = 0;
for (int i = 0; i < N; i++)
if (a[i] % 5 == 2)
count++;
if (count)
cout << count;
else
cout << "N";
cout << " ";
}
void f4()
{
float sum=0;
float ave;
int count = 0;
for (int i = 0; i < N; i++)
if (a[i] % 5 == 3)
{
sum += a[i];
count++;
}
ave = floor(sum/count * 10 + 0.5) / 10;
if (count)
cout << ave;
else
cout << "N";
cout << " ";
}
void f5()
{
int max=0;
int count=0;
for (int i = 0; i < N; i++)
if (a[i] % 5 == 4)
{
count++;
if (a[i] > max)
max = a[i];
}
if (count)
cout << max;
else
cout << "N";
}
int main()
{
cin >> N;
int i;
for (i = 0; i < N; i++)
cin >> a[i];
f1();
f2();
f3();
f4();
f5();
}