【PAT-B1012】 数字分类 (20分)(c++)
没想到写了100多行代码去解决这个问题。
没能将问题整体考虑,而是去将一个整体问题划分为每一个小的独立问题去解决,这可能就是代码过长的原因吧!
#include<iostream>
using namespace std;
#include<vector>
#include<math.h>
#include<iomanip>
#include<algorithm>
void test01()
{
vector<int> arr;
int n = 0;
int renyi = 0;
cin >> renyi;
while (cin >> n)
{
arr.push_back(n);
if (cin.get() == '\n')
break;
}
int len = arr.size();
//cout << "数组长度: " << len << endl;
//A1
int A1_sum = 0;
for (int i = 0; i < len; i++) {
//能被 5 整除的数字中所有偶数的和
//就是能被10整除的数字之和
int num = arr[i];
if (num % 10 == 0) {
A1_sum = A1_sum + num;
}
}
//等于初始值0就是不存在
if (A1_sum == 0)cout << "N ";
else cout << A1_sum << " ";
//A2
int A2_sum = 0;
vector<int> arr_A2;
for (int i = 0; i < len; i++) {
int num = arr[i];
if (num % 5 == 1) {
arr_A2.push_back(num);
}
}
//满足A2的数组
int A2_size = arr_A2.size();
//如果不为空的话,就进行下一步
if (A2_size != 0) {
for (int i = 0; i < A2_size; i++) {
int pow_num = 0;
int num = arr_A2[i];
pow_num = pow(-1, i) * num;
//cout << pow_num << endl;
A2_sum = pow_num + A2_sum;
}
cout << A2_sum << " ";
}
else cout << "N ";
//A3
int A3_sum = 0;
for (int i = 0; i < len; i++)
{
int A3_num = 0;
A3_num = arr[i];
if (A3_num % 5 == 2) {
A3_sum++;
}
}
if (A3_sum != 0) cout << A3_sum << " ";
else cout << "N ";
//A4
double A4_arg;
vector<int> A4_arr;
int A4_len = 0;
for (int i = 0; i < len; i++)
{
int A4_num = 0;
A4_num = arr[i];
if (A4_num % 5 == 3) {
A4_arr.push_back(A4_num);
}
}
//所有余3的数的数组的长度
A4_len = A4_arr.size();
//求和
double A4_sum = 0;
int A4_arr_len = 0;
A4_arr_len = A4_arr.size();
if (A4_arr_len != 0) {
for (int i = 0; i < A4_len; i++)
{
//遍历A4_arr
int A4_arr_num = 0;
A4_arr_num = A4_arr[i];
//求和
A4_sum = A4_sum + A4_arr_num;
}
//进行平均
A4_arg = A4_sum / A4_arr_len;
cout << fixed << setprecision(1) << A4_arg << " ";
}
else cout << "N ";
//A5
int A5_num = 0;
int A5_nine = 0;
vector<int> A5_arr;
for (int i = 0; i < len; i++)
{
A5_num = arr[i];
if (A5_num % 5 == 4) {
A5_arr.push_back(A5_num);
}
}
sort(A5_arr.rbegin(), A5_arr.rend());
if (A5_arr.size() == 0) {
cout << "N" << endl;
}
else {
cout << A5_arr[0] << endl;
}
}
int main()
{
test01();
return 0;
}