【传送门:BZOJ2326】 简要题意: 给出n和m,要求计算Concatenate(1...n)%m的值,其中Concatenate(1...n)是将所有正整数1,2,…,n顺序连接起来得到的数,例如,n=13,Concatenate(1...N)=12345678910111213 题解: 矩阵 ...
分类:
其他好文 时间:
2018-04-03 14:33:22
阅读次数:
104
分析:设f[i]为1~i组成的数,可以得到f[i] = f[i-1] * 10^k + i.对于一个序列求第n项,一般可以用矩阵乘法来加速,但是每一个矩阵只能对应一个不变的递推式,这个式子中的k会变,那怎么办呢?那么在1~9,10~99,100~999每一次构造一个矩阵就好了,具体的矩阵如下: f( ...
分类:
其他好文 时间:
2017-09-18 22:25:20
阅读次数:
245
【BZOJ2326】[HNOI2011]数学作业 题解:对于位数相同的数字,这显然是满足矩乘性质的。 那么我们枚举每一位,如果当前i=10^k,那么维护行向量(sum,now,1),now代表当前的数,每次将sum*=i再加上now,now+=1即可。 ...
分类:
其他好文 时间:
2017-09-03 11:12:54
阅读次数:
124
题意:求12345……101112……(N-1)N mod M的值(被模数就是1-N顺次连接起来)。 题解:丧病的数学老师,看自己写的题解都看不懂了QAQ,首先设${f_i}$=前i个数连接起来 mod M的值,然后按位数不断转移,也就是说,假定当前要增加的数i最高位是10^k,那么\[{f_i} ...
分类:
其他好文 时间:
2017-02-26 12:27:28
阅读次数:
207
题目大意:输入n(n<=10^18)和m,将1~n的整数连起来模m输出,比如n=13则输出12345678910111213模m的数。 设f[i]为1~i整数连起来模m的数,i的位数为k,则有f[i]=(f[i-1]*10^k+i)mod m。可以发现f[i-1]和10^k都是会变化的,不能直接矩乘 ...
分类:
其他好文 时间:
2016-08-20 00:06:16
阅读次数:
132
矩阵快速幂,分1-9,10-99...看黄学长的代码理解。。。然而他直接把答案保存在最后一行(没有说明。。。好吧应该是我智障这都不知道。。。 2326: [HNOI2011]数学作业 Description Input Output Sample Input Sample Output HINT S ...
分类:
其他好文 时间:
2016-07-18 12:48:16
阅读次数:
240
Description Input Output Sample Input Sample Output HINT Source Solution 递推式长这样:$f[n]=f[n-1]*10^k+n$ 对于每一段位数个数相同的$n$(如$10\sim99,100\sim999,23333\sim66 ...
分类:
其他好文 时间:
2016-07-14 03:12:22
阅读次数:
133
矩阵乘法. 10^k,0,0 (f[i+1],i+1,1) = (f[i],i,1) ( 1, 1,0 ) 1. 1,0) k为(i+1)的位数。这点很重要,所以每回都是算到999…9,然后k就会+1。所以题目中的l和... ...
分类:
其他好文 时间:
2016-05-25 11:15:55
阅读次数:
183
2326: [HNOI2011]数学作业Time Limit:10 SecMemory Limit:128 MBSubmit:1388Solved:799[Submit][Status][Discuss]DescriptionInputOutputSample InputSample OutputH...
分类:
其他好文 时间:
2015-08-17 21:26:52
阅读次数:
111