本题要求给定 N 个正整数,要求你从中得到下列三种计算结果: A1 = 能被 3 整除的最大整数 A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数 A3 = 存在整数 K 使之可以表示为 3K+2 的所有整数的平均值(精确到小数点后 1 位)
时间: 2023-04-02 18:04:34 浏览: 295
delete--number.rar_K._delete namber_delete number_给定n位正整数
5星 · 资源好评率100%
A1 = 本题要求给定 N 个正整数,要求你从中得到下列三种计算结果: A1 = 能被 3 整除的最大整数 A2 = 存在整数 K 使之可以表示为 3K 1 的整数的个数 A3 = 存在整数 K 使之可以表示为 3K 2 的所有整数的平均值(精确到小数点后 1 位)
对于给定的 N 个正整数,我们可以遍历所有数,找到能被 3 整除的最大整数,同时记录下所有 3K+1 和 3K+2 的数的个数和它们的和,最后根据个数和和来计算 A2 和 A3。
具体实现可以参考以下代码:
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int n, a, cnt1 = , cnt2 = , sum2 = , cnt3 = , sum3 = ;
int max3 = -1; // 记录能被 3 整除的最大整数
cin >> n;
for (int i = ; i < n; i++) {
cin >> a;
if (a % 3 == && a > max3) max3 = a;
if (a % 3 == 1) cnt1++;
if (a % 3 == 2) {
cnt2++;
sum2 += a;
}
}
for (int i = ; i < cnt2; i++) {
cnt3 += cnt1;
sum3 += sum2 + cnt1;
}
double avg3 = ;
if (cnt3 > ) avg3 = (double)sum3 / cnt3;
printf("%d\n%d\n%.1f\n", max3, cnt1, avg3);
return ;
}
阅读全文