【深基4.例3】分类平均
题目描述
给定 n 和 k,将从 1 到 n 之间的所有正整数可以分为两类:A 类数可以被 k整除(也就是说是 k 的倍数),而 B 类数不能。请输出这两类数的平均数,精确到小数点后 1 位,用空格隔开。
数据保证两类数的个数都不会是 0。
输入格式
输入两个正整数 n 与 k。
输出格式
输出一行,两个实数,分别表示 A 类数与 B 类数的平均数。精确到小数点后一位。
样例输入1
100 16
样例输出1
56.0 50.1
提示
数据保证,$1 \leq n\leq 10000$,$1 \leq k \leq 100$。
代码演示
import java.util.Scanner;
public class P5719 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//1到n之间的数
int n = scanner.nextInt();
//1到n之间的数可以被k整除是A类数,否则为B类数
int k = scanner.nextInt();
//A类数的总和
int sum1 = 0;
//记录有多少个数是A类数
int number1 = 0;
//B类数的总和
int sum2 = 0;
//记录有多少个数是B类数
int number2 = 0;
for (int i = 1; i < n+1; i++) {
if (i % k == 0) {
number1++;
sum1 += i;
} else if (i % k != 0) {
number2++;
sum2 += i;
}
}
float average1 = sum1 / (float)number1;
float average2 = sum2 / (float)number2;
//占位符"%.1f",它代表要输出的浮点数,其中".1"表示要输出的小数位数,即保留1位小数。
String format1 = String.format("%.1f", average1);
String format2 = String.format("%.1f", average2);
System.out.println(format1+" "+format2);
}
}