4.7爆蛋模拟赛
T1:
【题目描述】
给一个正整数 N,我们定义“子数”字是 N 的一段非 0 开头的连续数字。
举个例子,如果 N=1021,它有 7 个“子数”,分别是“1”, “10”,“102”,“1021”,
“2”,“21”和“1”(可重复)。
现在给你一个任务:请计算所有“子数”的和。
对于 N=1021 来说,“子数”和等于 。
结果可能非常巨大,输出答案对 $1000000007$ 取模。
【输入格式】
第一行一个数 T。
接下来 T 行每行一个数表示 n。
【输出格式】
输出 T 行每行一个整数表示这个数的子数。
【样例输入】
2
1234567890123456789
1021
【样例输出】
40% :1<=n<= $10^{200}$ T<=100
100%:1<=n<=$10^{100000}$ T<=100
分析
我们从后面开始考虑
每次加进去一个数,那么这个数对答案所产生的贡献肯定是
$\sum_{j=0}^{i-1} 10^{j} \ast a[i]\ast a[i]前面不为零的数字的个数$
这很显然,加进去一个不为零的数会使这个数多算一次。
预处理10的幂
$O(TN)$回答
合算$O(能过)$
CODE
1 |
|