題目描述:
給定一系列正整數,請按要求對數字進行分類,並輸出以下 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
解題思路:
每輸入一個數字,對其進行操作,判斷屬於什麼情況,做相應的操作,注意最後的輸出,也可以使用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;
}