1 条题解
-
0
把 的范围拆成 和 两个范围,把 的范围拆成 和 两个范围。那么 的取值范围就有四种可能:设 表示 属于它的第 个范围, 属于它的第 个范围,则这四个可能分别是 。
然后分情况讨论。
- :将 的范围分别拆成 和 个大小为 的小范围,那么只考虑 分别在哪个范围的话,一共有 $\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
- 10295
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 2
- 上传者