题目
题目地址:PAT 乙级 1012
思路
最后一个测试点怎么也过不了,问题在于A2的判断,不能单纯地以0作为判断条件;假设满足A2条件的只有两个数6和6,计算结果仍然是0,但是输出A2的值是0不是'N‘,因此需要给A2加一个计数变量作为判断条件。
代码
#include <iostream>
#include <vector>
#include <cstdio>
using namespace std; int main() {
vector<int> num;
int n = ;
cin >> n;
while (n--) {
int tmp = ;
cin >> tmp;
num.push_back(tmp);
}
int A1 = ;
int A2 = ;
int A3 = ;
float A4 = ;
int A5 = ;
int A2_cnt = ;
bool flag = true;
int cnt = ;
int maxx = ;
for (int i = ; i < num.size(); i++) {
if (num[i] % == && num[i] % == )
A1 += num[i];
else if (num[i] % == ) {
A2_cnt++;
if (flag) {
A2 += num[i];
flag = false;
}
else {
A2 -= num[i];
flag = true;
}
}
else if (num[i] % == )
A3++;
else if (num[i] % == ) {
A4 += num[i];
cnt++;
}
else if (num[i] % == ) {
if (num[i] > maxx)
maxx = num[i];
}
}
if (A4 != )
A4 /= cnt;
A5 = maxx;
if (A1 == )
cout << "N ";
else
cout << A1 << ' ';
if (A2_cnt == )
cout << "N ";
else
cout << A2 << ' ';
if (A3 == )
cout << "N ";
else
cout << A3 << ' ';
if (A4 == )
cout << "N ";
else
printf("%.1f ", A4);
if (A5 == )
cout << "N";
else
cout << A5 << endl; return ;
}