学习C++从娃娃抓起!记录下洛谷C++学习和备考过程中的题目,记录每一个瞬间。
附上汇总贴:洛谷刷题C++语言 | 汇总_热爱编程的通信人的博客-CSDN博客
【题目描述】
给定 n 和 k,将从 1 到 n 之间的所有正整数可以分为两类:A 类数可以被 k 整除(也就是说是 k 的倍数),而 B 类数不能。请输出这两类数的平均数,精确到小数点后 1 位,用空格隔开。
数据保证两类数的个数都不会是 0。
【输入】
输入两个正整数 n 与 k。
【输出】
输出一行,两个实数,分别表示 A 类数与 B 类数的平均数。精确到小数点后一位。
【输入样例】
100 16
【输出样例】
56.0 50.1
【代码详解】
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,k,sum1=0,sum2=0,c1=0,c2=0;
double avg1, avg2;
cin >> n >> k;
for (int i=1; i<=n; i++) {
if (i%k==0) {
sum1 += i;
c1++;
} else {
sum2 += i;
c2++;
}
}
avg1 = 1.0 * sum1 / c1;
avg2 = 1.0 * sum2 / c2;
printf("%.1f %.1f", avg1, avg2);
return 0;
}
【运行结果】
100 16
56.0 50.1