【PAT】B1012. 数字分类(C++精确到小数点、题目理解)
@(PAT)
链接:https://www.patest.cn/contests/pat-b-practise/1012
题目不难,根据5个部分逐渐取数判断即可。
坑:
1. A1的条件是求偶数的和。
2. 输出N的条件是求出来的A1~A5的结果为空,一开始求了当被5整取的数字为0个才输出N,这是错误的。
AC code:
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
#include <sstream>
#include <iomanip>
using namespace std;
int main() {
int n;
cin>> n;
vector<int> a1, a2, a3, a4, a5;
for (int k= 0; k< n; k++) {
int temp;
cin>> temp;
if (temp% 5== 0) {
if (temp% 2== 0) a1.push_back(temp);
} else if (temp% 5== 1) {
a2.push_back(temp);
} else if (temp% 5== 2) {
a3.push_back(temp);
} else if (temp% 5== 3) {
a4.push_back(temp);
} else {
a5.push_back(temp);
}
}
if (a1.size()== 0) {
cout<< "N ";
} else {
int A1= 0;
for (int i= 0; i< a1.size(); i++) {
A1+= a1[i];
}
cout<< A1<< " ";
}
if (a2.size()== 0) {
cout<< "N ";
} else {
int A2= 0;
for (int i= 0; i< a2.size(); i++) {
if (i% 2== 0) {
A2+= a2[i];
} else {
A2-= a2[i];
}
}
cout<< A2<< " ";
}
if (a3.size()== 0) {
cout<< "N ";
} else {
cout<< a3.size()<< " ";
}
if (a4.size()== 0) {
cout<< "N ";
} else {
int sum= 0;
for (int i= 0; i< a4.size(); i++) {
sum+= a4[i];
}
float mean= (float)sum/ (float)a4.size();
cout<< fixed<< setprecision(1)<< mean<< " ";
}
if (a5.size()== 0) {
cout<< "N";
} else {
int A5= a5[0];
for (int i= 1; i< a5.size(); i++) {
if (a5[i]> A5) {
A5= a5[i];
}
}
cout<< A5;
}
}
注意C++中,保留小数点n位的方法:
#include <iomanip>
cout<< fixed<< setprecision(1)<< mean<< " ";