天天看点

C++版浙大PAT乙级1012(20分)

https://pintia.cn/problem-sets/994805260223102976/problems/994805311146147840

一开始这题的测试点8没通过,我感觉是题出的有问题,因为它保证输入的数是正整数,但感觉还是输入了0。所以只好增加了f1到f5来检测每种情况。

题意:这题先输入一个n,再输入n个正整数,分别算出这n个数中:

(1)能被5整除的偶数的和。

(2)被 5 除后余 1 的数,进行加减交叉运算,n​1​​−n​2​​+n​3​​−n​4​​⋯;

(3)被 5 除后余 2 的数的个数;

(4)被 5 除后余 3 的数的平均数,保留1位小数;

(5)被 5 除后余 4 的数中的最大数。

#include<iostream>
#include<cstdio>
#include<string>
using namespace std;

int main(){
	int n, num, count=0;
	int a1=0, a2=0, a3=0, a4=0, a5=0;
	int f1=0, f2=0, f3=0, f4=0, f5=0;
	int flag = 1;
	float b4=0.0;
	cin >> n;
	for(int i=0; i<n; i++){
		cin >> num;
		if(num%10 == 0){
			a1 += num;
			f1 = 1;
		}else if(num%5 == 1){
			a2 += flag * num;
			flag = -flag;
			f2 = 1;
		}else if(num%5 == 2){
			a3 ++;
			f3 = 1;
		}else if(num%5 == 3){
			count ++;
			a4 += num;
			f4 = 1;
		}else if(num%5 == 4 && a5 < num){
			a5 = num;
			f5 = 1;
		}
	}
	b4 = a4 / (count * 1.0);
	if(f1) cout << a1 << " "; else cout << "N ";
	if(f2) cout << a2 << " "; else cout << "N ";
	if(f3) cout << a3 << " "; else cout << "N ";
	if(f4) printf("%.1f ", b4); else cout << "N ";
	if(f5) cout << a5; else cout << "N";
	return 0;
}
           
PAT