天天看點

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