题目描述
给定 n n n 和 k k k,将从 1 到 n n n 之间的所有正整数可以分为两类:A 类数可以被 k k k 整除(也就是说是 k k k 的倍数),而 B 类数不能。请输出这两类数的平均数,精确到小数点后 1 1 1 位,用空格隔开。
数据保证两类数的个数都不会是 0 0 0。
输入格式
输入两个正整数 n n n 与 k k k。
输出格式
输出一行,两个实数,分别表示 A 类数与 B 类数的平均数。精确到小数点后一位。
输入输出样例
输入
100 16
输出
56.0 50.1
说明/提示
数据保证, 1 ≤ n ≤ 10000 1 \leq n\leq 10000 1≤n≤10000, 1 ≤ k ≤ 100 1 \leq k \leq 100 1≤k≤100。
方式
代码
python
class Solution:
@staticmethod
def oi_input():
"""从标准输入读取数据"""
num1, num2 = map(int, input().split())
return num1, num2
@staticmethod
def oi_test():
"""提供测试数据"""
return 100, 16
@staticmethod
def solution(num1, num2):
nums_a, nums_b = [], []
for i in range(1, num1 + 1):
if i % num2 == 0:
nums_a.append(i)
else:
nums_b.append(i)
print("{:.1f}".format(sum(nums_a) / len(nums_a)), "{:.1f}".format(sum(nums_b) / len(nums_b)))
oi_input = Solution.oi_input
oi_test = Solution.oi_test
solution = Solution.solution
if __name__ == '__main__':
num1, num2 = oi_test()
# num1, num2 = oi_input()
solution(num1, num2)
流程图
是 否 是 否 是 否 开始 读取输入num1和num2 初始化nums_a和nums_b 遍历1到num1的所有数 能否被num2整除? 加入nums_a 加入nums_b 继续下一个数 计算平均值 nums_a是否为空? avg_a = 0.0 avg_a = sum_a / len_a nums_b是否为空? avg_b = 0.0 avg_b = sum_b / len_b 格式化输出两位小数 结束