1012 數字分類 (20分)
題目地址:https://pintia.cn/problem-sets/994805260223102976/problems/994805311146147840
給定一系列正整數,請按要求對數字進行分類,并輸出以下 5 個數字:
- \(A_1\) = 能被 5 整除的數字中所有偶數的和;
- \(A_2\) = 將被 5 除后余 1 的數字按給出順序進行交錯求和,即計算 \(4 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 個正整數,按題目要求計算 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
我的理解
理解好題意即可,資料對5取余運算,分類處理,
代碼段
#include <stdlib.h>
#include <iomanip>
#include <iostream>
using namespace std;
int main() {
int T;
cin >> T;
int sample[T];
for (int i = 0; i < T; ++i) {
cin >> sample[i];
}
int A1 = 0, A2 = 0, A3 = 0, A4 = 0, A5 = -1;
// 控制 A2的交錯求和
int flagA2 = 1;
// 標志A2 是否進行了計算
int isSumA2 = false;
// 標志A4的個數,以便于后面計算平均數
int counterA4 = 0;
for (int j = 0; j < T; ++j) {
int element = sample[j];
int remainder = element % 5;
switch (remainder) {
case 0:
if (element % 2 == 0) {
A1 += element;
}
break;
case 1:
if (flagA2) {
A2 += element;
flagA2 = !flagA2;
isSumA2 = true;
} else {
A2 -= element;
flagA2 = !flagA2;
isSumA2 = true;
}
break;
case 2:
A3++;
break;
case 3:
A4 += element;
counterA4++;
break;
case 4:
if (A5 < element) {
A5 = element;
}
break;
default:
break;
}
}
if (A1 != 0) {
cout << A1 << " ";
} else {
cout << "N ";
}
if (isSumA2) {
cout << A2 << " ";
} else {
cout << "N ";
}
if (A3) {
cout << A3 << " ";
} else {
cout << "N ";
}
if (A4) {
float result = (float)A4 / (float)counterA4;
cout << setiosflags(ios::fixed) << setprecision(1) << result << " ";
} else {
cout << "N ";
}
if (A5 > -1) {
cout << A5 << endl;
} else {
cout << "N" << endl;
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/106077.html
標籤:其他
上一篇:util之ArrayList
