哭死了。。。这题死于读题,一开始最后一个测试点打死都过不去,参考其他人的解法才发现是审题有问题。。。
A1 = 能被5整除的数字中所有偶数的和;
这句话的意思是既能被5整除又是偶数才能计入这一类数字 只能被5整除是不行的...
还有“这类数字为0”,这类数字指的是A1~A5的分类,而不是后面计算的结果
还是要细心细心呀!
1012. 数字分类 (20)
时间限制
100 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
给定一系列正整数,请按要求对数字进行分类,并输出以下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
#include<iostream> #include<iomanip> #include<cmath> using namespace std; int main() { int n,a; int a1[1001], a2[1001], a3[1001], a4[1001], a5[1001]; int i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0; int ans1=0, ans2 = 0, ans3 = 0, ans5 = 0; double ans4 = 0; cin >> n; for (int i = 0; i < n; i++) { cin >> a; switch (a % 5) { case 0: if (a % 2 == 0) { a1[i1] = a; i1++; } break; case 1: a2[i2] = a; i2++; break; case 2: a3[i3] = a; i3++; break; case 3: a4[i4] = a; i4++; break; case 4: a5[i5] = a; i5++; break; default: break; } } for (int i = 0; i < i1; i++) { ans1 += a1[i]; } if (i1 != 0)cout << ans1 << " "; else cout << "N "; for (int i = 0; i < i2; i++) { if (i % 2 == 0)ans2 += a2[i]; else ans2 -= a2[i]; } if (i2 != 0)cout << ans2 << " "; else cout << "N "; ans3 = i3; if (i3 != 0)cout << ans3 << " "; else cout << "N "; for (int i = 0; i < i4; i++) ans4 += a4[i]; if(i4!=0)ans4 /= i4; if (i4 != 0)cout << setiosflags(ios::fixed) << setprecision(1) << ans4 << " "; else cout << "N "; for (int i = 0; i < i5; i++) { if (a5[i] > ans5)ans5 = a5[i]; } if (i5 != 0)cout << ans5; else cout << "N"; return 0; }