luogu-P5719 【深基4.例3】分类平均
GESP二级练习,循环分支练习,难度★☆☆☆☆。
luogu-P5719 【深基4.例3】分类平均
题目要求
题目描述
给定 和 ,将从 1 到 之间的所有正整数可以分为两类:A 类数可以被 整除(也就是说是 的倍数),而 B 类数不能。请输出这两类数的平均数,精确到小数点后 位,用空格隔开。
数据保证两类数的个数都不会是 。
输入格式
输入两个正整数 与 。
输出格式
输出一行,两个实数,分别表示 A 类数与 B 类数的平均数。精确到小数点后一位。
输入 #1
100 16
输出 #1
56.0 50.1
说明/提示
数据保证,,。
题目分析
解题思路
首先,我们需要理解题目的核心要求:
- 将从 1 到 n 之间的所有正整数分为两类:A 类数是 k 的倍数,B 类数不是
解题思路:
- 读取两个整数 n 和 k
- 初始化两个变量来存储 A 类数和 B 类数的总和
- 初始化两个计数器来记录 A 类数和 B 类数的个数
- 遍历从 1 到 n 的所有整数
- 判断每个整数是否是 k 的倍数
- 根据判断结果更新相应的总和和计数器
- 计算 A 类数和 B 类数的平均值,精确到小数点后一位
{% include custom/custom-post-content-inner.html %}
示例代码
#include <cstdio>
#include <iostream>
using namespace std;
int main() {
int n; // 定义一个整型变量 n
cin >> n; // 从标准输入读取 n 的值
int k; // 定义一个整型变量 k
cin >> k; // 从标准输入读取 k 的值
int a = 0, b = 0; // 定义并初始化两个整型变量 a 和 b 为 0
int ans = 0, bns = 0; // 定义并初始化两个整型变量 ans 和 bns 为 0
for (int i = 1; i <= n; i++) { // 循环从 1 到 n
if (i % k == 0) { // 如果 i 能被 k 整除
a += i; // 将 i 的值加到 a 中
ans++; // ans 自增 1
} else { // 如果 i 不能被 k 整除
b += i; // 将 i 的值加到 b 中
bns++; // bns 自增 1
}
}
printf("%.1f %.1f", (double)a / (double)ans, (double)b / (double)bns); // 打印结果,保留一位小数
return 0; // 返回 0,表示程序正常结束
}
{% include custom/custom-post-content-footer.md %}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
“luogu-”系列题目可在 洛谷题库 在线评测。
“bcqm-”系列题目可在 编程启蒙题库 在线评测。
GESP/CSP 认证学习微信公众号

Last updated on