PAT1012题目
链接:https://pintia.cn/problemsets/994805260223102976/problems/994805320306507776
题解
题目中提到的A1~A5中,A4肯定需要加计数器。
除此之外,A2可能为0或小于0,所以在判断A2这类数字不存在的时候,A2也必须加一个计数器(或判定器)来辅助输出判定。(这是一个测试点)
其他的A1、A3、A4、A5由于不可能为0,所以设置为初始0,在最后输出时只需要判别是不是0就可以判断输出N或输出相应的数字。
实现代码(C++)
#include"iostream"
#include"iomanip"
using namespace std;
bool ifqufan = true;
int qufan(int n) {//取反函数
ifqufan = !ifqufan;
if (ifqufan) return -n;//需要取反
else return n;//不需要取反
}
int main()
{
int T;
cin >> T;
int n;
int A[5] = { 0 };
int A1num = 0, A3num = 0;//分别为A[1]和A[3]的计数器
while (T--)
{
cin >> n;
switch (n % 5) {
case 0:A[0] += (n % 2 == 0 ? n : 0); break;//能被 5 整除的数字中所有偶数的和
case 1:A[1] += qufan(n); A1num++; break;//将被 5 除后余 1 的数字按给出顺序进行交错求和
case 2:A[2]++; break;//被 5 除后余 2 的数字的个数
case 3:A[3] += n; A3num++; break;//被 5 除后余 3 的数字的平均数,精确到小数点后 1 位
case 4:A[4] = (n > A[4] ? n : A[4]); break;//被 5 除后余 4 的数字中最大数字。
}
}
if (A[0] != 0) cout << A[0] << ' '; else cout << "N ";
if (A1num != 0) cout << A[1] << ' '; else cout << "N ";
if (A[2] != 0) cout << A[2] << ' '; else cout << "N ";
if (A3num != 0) cout << fixed << setprecision(1) << 1.0*A[3] / A3num << ' '; //用printf("%.1f ", 1.0*A[3] / A3num);效果一样
else cout << "N ";
if (A[4] != 0) cout << A[4]; else cout << "N";
return 0;
}