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 = 0;
    cin >> n;
    while (n--) {
        int tmp = 0;
        cin >> tmp;
        num.push_back(tmp);
    }
    int A1 = 0;
    int A2 = 0;
    int A3 = 0;
    float A4 = 0;
    int A5 = 0;
    int A2_cnt = 0;
    bool flag = true;
    int cnt = 0;
    int maxx = 0;
    for (int i = 0; i < num.size(); i++) {
        if (num[i] % 5 == 0 && num[i] % 2 == 0)
            A1 += num[i];
        else if (num[i] % 5 == 1) {
            A2_cnt++;
            if (flag) {
                A2 += num[i];
                flag = false;
            }
            else {
                A2 -= num[i];
                flag = true;
            }
        }
        else if (num[i] % 5 == 2)
            A3++;
        else if (num[i] % 5 == 3) {
            A4 += num[i];
            cnt++;
        }
        else if (num[i] % 5 == 4) {
            if (num[i] > maxx)
                maxx = num[i];
        }
    }
    if (A4 != 0)
        A4 /= cnt;
    A5 = maxx;
    if (A1 == 0)
        cout << "N ";
    else
        cout << A1 << ' ';
    if (A2_cnt == 0)
        cout << "N ";
    else
        cout << A2 << ' ';
    if (A3 == 0)
        cout << "N ";
    else
        cout << A3 << ' ';
    if (A4 == 0)
        cout << "N ";
    else
        printf("%.1f ", A4);
    if (A5 == 0)
        cout << "N";
    else
        cout << A5 << endl;

    return 0;
}

猜你喜欢

转载自www.cnblogs.com/moujun1001/p/9350996.html