【来源】
【分析】
按题目要求分别计算相应的值即可。要足够细心才能通过所有测试点。
学到的初始化数组的新方法:
#include<cstring>
...
int num[100];
memset(num, 0, sizeof(int)*100);
...
需注意用这种方法初始化数组是有限制条件的。初始化的值必须为ASCII码值(0-128),超出则会导致未知的错误。
【源码】
#include <iostream>
#include <iomanip>
#include <cstring>
using namespace std;
int main()
{
int n;
cin >> n;
int* nums = new int[n];
for (int i = 0; i < n; ++i){
cin >> nums[i];
}
int a[5];
int counta[5];
memset(a, 0, sizeof(int)* 5);
memset(counta, 0, sizeof(int)* 5);
int flag = 1;
for (int i = 0; i < n; ++i){
int re = nums[i] % 5;
switch (re){
case 0:
if (nums[i] % 2 == 0){
++counta[0];
a[0] += nums[i];
}
break;
case 1:
++counta[1];
a[1] += flag*nums[i];
flag = (-flag);
break;
case 2:
++counta[2];
++a[2];
break;
case 3:
++counta[3];
a[3] += nums[i];
break;
case 4:
++counta[4];
if (nums[i] > a[4]){
a[4] = nums[i];
}
break;
}
}
if (counta[0] == 0){
cout << "N";
}
else{
cout << a[0];
}
for (int i = 1; i < 5; ++i){
if (counta[i] == 0){
cout << " N";
}
else{
if (i == 3){
cout << " " << setprecision(1) << fixed << a[i] / (float)counta[i];
}
else{
cout << " " << a[i];
}
}
}
delete[] nums;
return 0;
}
【点评】
此题为简单题。