1 条题解
-
0
自动搬运
来自洛谷,原作者为

cff_0102
& aqua_qaq | 团子群 185800038 | 如果我死了说明我 AFO 了搬运于
2025-08-24 22:54:33,当前版本为作者最后更新于2024-01-22 18:49:27,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
把 的范围拆成 和 两个范围,把 的范围拆成 和 两个范围。那么 的取值范围就有四种可能:设 表示 属于它的第 个范围, 属于它的第 个范围,则这四个可能分别是 。
然后分情况讨论。
- :将 的范围分别拆成 和 个大小为 的小范围,那么只考虑 分别在哪个范围的话,一共有 $\lfloor\dfrac{a}{n}\rfloor\times\lfloor\dfrac{b}{n}\rfloor$ 种可能。而在一个大小为 的小范围中, 随便取其中一个,为了让加和结果是 的倍数, 都有且只有一个数与其对应。因此,这样在每个小范围中,实际上有 种 的取值可能。乘上前面范围的可能,此时的可能数为 $\lfloor\dfrac{a}{n}\rfloor\times\lfloor\dfrac{b}{n}\rfloor\times n$ 种。
- :将 的范围拆成 个大小为 的小范围,那么只考虑 在哪个范围的话,一共有 种可能。而在一个大小为 的小范围中, 随便取其中一个,为了让加和结果是 的倍数, 都有且只有一个数与其对应。因此,这样在每个小范围中,实际上有 种 的取值可能。乘上前面范围的可能,此时的可能数为 种。
- :将 的范围拆成 个大小为 的小范围,那么只考虑 在哪个范围的话,一共有 种可能。而在一个大小为 的小范围中, 随便取其中一个,为了让加和结果是 的倍数, 都有且只有一个数与其对应。因此,这样在每个小范围中,实际上有 种 的取值可能。乘上前面范围的可能,此时的可能数为 种。
- :在一个大小为 的小范围中, 随便取一个数,为了让加和结果是 的倍数, 必须为 。此时必须要求 在 的范围内,即 。那么,答案应该是满足 且 的 个数。化简一下前者,得到 。因为 ,所以两式合并得到 。此时答案就是满足这个条件的 的数量。因此,有 $\max(0,a\bmod n-(n-b\bmod n)+1)=\max(0,a\bmod n+b\bmod n-n+1)$ 种 的取值可能。
所以答案就是上面四种情况的答案之和,即 $\lfloor\dfrac{a}{n}\rfloor\times\lfloor\dfrac{b}{n}\rfloor\times n+\lfloor\dfrac{b}{n}\rfloor\times(a\bmod n)+\lfloor\dfrac{a}{n}\rfloor\times(b\bmod n)+\max(0,a\bmod n+b\bmod n-n+1)$ 种可能的情况。
t=int(input()) for _ in range(t) : n,a,b=map(int,input().split()) print((a//n)*(b//n)*n + (a%n+1)*(b//n) + (b%n+1)*(a//n) + max(0,a%n+b%n-n+1))
- 1
信息
- ID
- 9018
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者