【PAT乙級】數字分類

題目描述:

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

A1= 能被 5 整除的數字中所有偶數的和;
A​2= 將被 5 除後餘 1 的數字按給出順序進行交錯求和,即計算 n​1−n​2+n​3​−n4⋯;
A3= 被 5 除後餘 2 的數字的個數;
A​4= 被 5 除後餘 3 的數字的平均數,精確到小數點後 1 位;
A​5= 被 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

解題思路:

每輸入一個數字,對其進行操作,判斷屬於什麼情況,做相應的操作,注意最後的輸出,也可以使用if-else

代碼:

#include<iostream>
#include<iomanip>
using namespace std;
int main() {
    int N,x,i=1;
    float c4=0;
    int c1=0,c2=0,c3=0,cn=0,c5=0;
    bool T1 = false,T2 = false,T3 = false,T4 = false,T5 = false;
    cin>>N;
    while(N--) {
        cin>>x;
        switch(x%5) {
            case 0:if(x%2==0) {
				c1+=x;T1=true;
				}
				break;
            case 1:c2+=(i*x);i=-i;T2=true;break;
            case 2:c3++;T3=true;break;
            case 3:c4+=x;cn++;T4=true;break;
            case 4:if(x>c5)c5=x;T5=true;break;
        }
    }
    (T1)?(cout<<c1<<" "):(cout<<"N ");
    (T2)?(cout<<c2<<" "):(cout<<"N ");
    (T3)?(cout<<c3<<" "):(cout<<"N ");
    (T4)?(cout<<fixed<<setprecision(1)<<c4/cn<<" "):(cout<<"N ");
    (T5)?(cout<<c5):(cout<<"N");
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章