A85988.LibreOJ
提高+/省选-
通过率:0%
时间限制:1.00s
内存限制:512MB
题目描述
Source: Codeforces Goodbye 2017 G. New Year and Original Order
LibreOJ 又锅了。
在锅了的 LibreOJ 中,一道题目的总得分通过如下方式计算:
-
取出此题的所有提交记录,得到序列 A。
-
对于 A 的每个元素,假设其得分为 x,对总得分的贡献为 xf(x)。
其中 f(x)=atoi(sort(itoa(x, b)), b)。
itoa(x, b) 表示将正整数 x 以 b 进制形式转换得到的字符串。
sort(s) 表示将字符串 s 中的字符按照升序排序得到的字符串。
atoi(s, b) 表示将字符串 s 以 b 进制形式转换得到的正整数。
例如:
itoa(184, 3) = "20211"
sort("20211") = "01122"
atoi("01122", 3) = 44
则当 b=3 时 f(184)=44。
LibreOJ 的第 -1 题有着 n 个提交记录,第 i 个提交记录的得分为 i,请你求出第 -1 题的总得分。
形式化地说,你需要求出 i=1∑nif(i)。
为了方便输出,你只需要求出答案对 998,244,353 取模的结果即可。
输入格式
本题输入文件包含多组数据。
第一行一个正整数 T,表示数据组数。
第二行一个正整数 b,意义见题目描述。
接下来每行表示一组数据。
每组数据一行一个以 b 进制形式表示的正整数 n,意义见题目描述。
输出格式
对于每组数据,输出一行一个整数表示答案。
输入输出样例
输入#1
3 10 5 10 100
输出#1
55 295 221530
输入#2
2 2 111 1001010010100101010001100101101111010110001110
输出#2
98 588970119
说明/提示
定义 Len=T+∑⌊logb(n)⌋。
对于所有测试点:T≤20,2≤b≤10,n≤101000,Len≤1000。
每个测试点的具体限制见下表:
| 测试点编号 | n≤ | Len≤ | T= | b=2 |
|---|---|---|---|---|
| 1∼2 | 105 | 5 | 1 | 不保证 |
| 3∼4 | 105 | 340 | 20 | 不保证 |
| 5∼8 | 101000 | 1000 | 1 | 不保证 |
| 9∼10 | 101000 | 1000 | 1 | 保证 |
| 11∼14 | 101000 | 1000 | 10 | 保证 |
| 15∼20 | 101000 | 1000 | 10 | 不保证 |
Author: PinkRabbit