题解 P5719 【深基4.例3】分类平均

转载自我自己的博客园

这题太有意思了,发个题解纪念一下

题面来自洛谷

$\LaTeX$ 渲染不了,哭了(明明后台预览是可以渲染的啊=

(搬到 Hugo 博客可以正常显示了)

题目描述

给定 $n(n \le 10000)$ 和 $k(k \le 100)$,将从 $1$ 到 $n$ 之间的所有正整数可以分为两类:$A$ 类数可以被 $k$ 整除(也就是说是 $k$ 的倍数),而 $B$ 类数不能。请输出这两类数的平均数,精确到小数点后 $1$ 位,用空格隔开。

数据保证两类数的个数都不会是 $0$。

输入格式

输出格式

输入输出样例

输入 #1

1
100 16

输出 #1

1
56.0 50.1

分析

利用了等差数列等高阶数学知识来减少循环次数。

代码(C++)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,k,can,cant,all,num=0;
	cin>>n>>k;
	all=(n+1)*n/2;
	for(int i=k;i<=n;i+=k){
		can+=i;
		num++;
	}
	cant=all-can;
	double a = (double)can/num;
	double a_ = (double)cant/(n-num);
	printf("%.1lf %.1lf",a,a_);
	return 0;
}

编辑记录

2021-08-13 12:01:00

主站由 Vercel 驱动,如遇需使用 IPv6 或主站无法访问请访问托管于 GitHub Pages 的镜像(实时同步)。
由于 Pages 的局限性,我引入了 Google Analytics 来收集访问数据;这些数据只是我自己看着玩的,不会被泄露;
您大可屏蔽它的 Cookie,这不会影响您浏览本站的所有内容或发表评论。
本站支持 IPv6 网络。
萌ICP备 20213003号
Built with Hugo
主题 StackJimmy 设计