(pat乙級 1012)
給定一系列正整數,請按要求對數字進行分類,並輸出以下 5 個數字:
A1 = 能被 5 整除的數字中所有偶數的和;
A2 = 將被 5 除後餘 1 的數字按給出順序進行交錯求和,即計算 n1−n2+n3−n4⋯;
A3 = 被 5 除後餘 2 的數字的個數;
A4 = 被 5 除後餘 3 的數字的平均數,精確到小數點後 1 位;
A5 = 被 5 除後餘 4 的數字中最大數字。
輸入格式:
每個輸入包含 1 個測試用例。每個測試用例先給出一個不超過 1000 的正整數 N,隨後給出 N 個不超過 1000 的待分類的正整數。數字間以空格分隔。
輸出格式:
對給定的 N 個正整數,按題目要求計算 A1~A5 並在一行中順序輸出。數字間以空格分隔,但行末不得有多餘空格。
若其中某一類數字不存在,則在相應位置輸出 N。
輸入樣例 1:
13 1 2 3 4 5 6 7 8 9 10 20 16 18
輸出樣例 1:
30 11 2 9.7 9
輸入樣例 2:
8 1 2 4 5 6 7 9 16
輸出樣例 2:
N 11 2 N 9
c++代碼:
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
int n,a;
cin>>n;
int a1=0,a2=0,a5=-1;
double a4=0.0;
int n2=0,n3=0,n4=0;
for(int i=0;i<n;i++){
cin>>a;
if(a%5==0&&a%2==0)a1+=a;
else if(a%5==1){
n2++;
if(n2%2==0&&n2!=0)a2-=a;
else if(n2%2!=0)a2+=a;
}
else if(a%5==2)n3++;
else if(a%5==3){
a4+=a;n4++;
}
else if(a%5==4&&a>a5)a5=a;
}
a4=a4/(n4*1.0);
if(a1==0)cout<<"N ";else cout<<a1<<" ";
if(n2==0)cout<<"N ";else cout<<a2<<" ";
if(n3==0)cout<<"N ";else cout<<n3<<" ";
if(n4==0)cout<<"N ";else cout<<fixed<<setprecision(1)<<a4<<" ";
if(a5==-1)cout<<"N";else cout<<a5;
return 0;
}
注意:
引用頭文件#include< iomanip > 輸出時cout<<fixed<<setprecision(n)<<number 限定number格式爲小數點後n位。