P16808 [蓝桥杯 2026 国 Python A] 连续丢卡

题目描述

小蓝原本拥有一套卡片,卡片上写的数字分别为 $1, 2, \ldots, n$,每个数字恰好一张。 后来,小蓝发现这套卡片中丢失了连续的 $L$ 张。也就是说,存在一个正整数 $a$,使得写有数字 $a, a+1, \ldots, a+L-1$ 的卡片全部丢失,其中 $a+L-1 \le n$。 丢失发生后,小蓝将剩下所有卡片上的数字相加,得到的总和为 $S$。 现在,给定剩下卡片的数字之和 $S$ 以及丢失的卡片张数 $L$,请你计算所有可能的原卡片总数 $n$ 的总和。如果不存在任何符合条件的 $n$,则答案为 $0$。同一个合法的 $n$ 即使对应多种丢失情况,也只统计一次。 由于答案可能很大,你只需要给出满足条件的 $n$ 的总和对 $998244353$ 取模后的结果即可。

输入格式

第一行包含一个正整数 $T$,表示询问的组数。 接下来 $T$ 行,每行包含两个正整数 $S$ 和 $L$,中间用一个空格隔开。

输出格式

输出共 $T$ 行,每行包含一个整数,表示对应询问中所有可能 $n$ 的总和对 $998244353$ 取模后的结果。

说明/提示

### 【样例说明】 对于第一组询问,$S = 10, L = 2$。 - 当 $n = 5$ 时,可以丢失编号为 $2, 3$ 的两张卡片,剩余卡片编号之和为 $10$; - 当 $n = 6$ 时,可以丢失编号为 $5, 6$ 的两张卡片,剩余卡片编号之和为 $10$。 因此可能的 $n$ 为 $5$ 和 $6$,答案为 $5 + 6 = 11$。 ### 【评测用例规模与约定】 对于 $30\%$ 的评测用例,$1 \le T \le 5$, $1 \le S \le 10^6$, $1 \le L \le 20$; 对于所有评测用例,$1 \le T \le 10^5$, $1 \le S \le 10^{18}$, $1 \le L \le 100$。