【pat乙級】數字分類

(pat乙級 1012)

給定一系列正整數,請按要求對數字進行分類,並輸出以下 5 個數字:

A​1​​ = 能被 5 整除的數字中所有偶數的和;
A​2​​ = 將被 5 除後餘 1 的數字按給出順序進行交錯求和,即計算 n​1​​−n​2​​+n​3​​−n​4​​⋯;
A​3​​ = 被 5 除後餘 2 的數字的個數;
A​4​​ = 被 5 除後餘 3 的數字的平均數,精確到小數點後 1 位;
A​5​​ = 被 5 除後餘 4 的數字中最大數字。

輸入格式:
每個輸入包含 1 個測試用例。每個測試用例先給出一個不超過 1000 的正整數 N,隨後給出 N 個不超過 1000 的待分類的正整數。數字間以空格分隔。

輸出格式:
對給定的 N 個正整數,按題目要求計算 A​1​​~A​5​​ 並在一行中順序輸出。數字間以空格分隔,但行末不得有多餘空格。

若其中某一類數字不存在,則在相應位置輸出 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位。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章