给定n(n<=10000)和k(k<=100),将从1到n之间的所有正整数可以分为两类:A类数可以被k整除(也就是说是k的倍数),而B类数不能。请输入这两类数的平均数,精确到小数点后1位,用空格隔开。数据保证两类数的个数都不会是0.用C++代码示例。
时间: 2024-05-05 21:16:18 浏览: 113
问题描述:求从1~n的正整数中取出k(k<=n)个不重复整数的所有组合.pdf
```c
#include <stdio.h>
int main() {
int n, k;
scanf("%d%d", &n, &k);
int a_cnt = n / k; // A类数的个数
int b_cnt = n - a_cnt; // B类数的个数
int a_sum = (k + n / k) * a_cnt / 2; // A类数的和
int b_sum = (2 + b_cnt - 1) * b_cnt / 2 * k - a_sum; // B类数的和
double a_avg = (double)a_sum / a_cnt; // A类数的平均数
double b_avg = (double)b_sum / b_cnt; // B类数的平均数
printf("%.1lf %.1lf", a_avg, b_avg);
return 0;
}
```
阅读全文