我又对着跑出正解的程序调了好久

怕不是眼瞎了

这就是个分段矩阵,我们很容易就得到了递推式

\[f[i]=f[i-1]*10^k+i$

其中$k=log_{10}i$

于是就是分段矩阵

![矩阵](https://cdn.luogu.org/upload/pic/32564.png)

之后就是代码了,没有加快速乘WA了好久

```cpp
#include<iostream>
#include<cstring>
#include<cstdio>
#define re register
#define LL long long
LL n,m;
LL ans[4][4],a[4][4];
LL Ans=0;
inline LL mul(LL a,LL b)
{
LL s=0;
while(b)
{
if(b&1ll) s=s+a%m;
b>>=1ll;
a=a+a%m;
}
return s;
}
inline void did_a()
{
LL mid[4][4];
for(re int i=1;i<=3;i++)
for(re int j=1;j<=3;j++)
mid[i][j]=a[i][j],a[i][j]=0;
for(re int i=1;i<=3;i++)
for(re int j=1;j<=3;j++)
for(re int p=1;p<=3;p++)
a[i][j]=(a[i][j]+mul(mid[i][p],mid[p][j])%m)%m;
}
inline void did_ans()
{
LL mid[4][4];
for(re int i=1;i<=3;i++)
for(re int j=1;j<=3;j++)
mid[i][j]=ans[i][j],ans[i][j]=0;
for(re int i=1;i<=3;i++)
for(re int j=1;j<=3;j++)
for(re int p=1;p<=3;p++)
ans[i][j]=(ans[i][j]+mul(mid[i][p],a[p][j])%m)%m;
}
inline void Rebuild(LL t)
{
memset(a,0,sizeof(a)),memset(ans,0,sizeof(ans));
ans[1][1]=a[1][1]=1ll;
ans[2][1]=a[2][1]=1ll;
ans[2][2]=a[2][2]=1ll;
ans[3][2]=a[3][2]=1ll;
ans[3][3]=a[3][3]=t;
}
inline void Quick(LL b)
{
while(b)
{
if(b&1ll) did_ans();
b>>=1ll;
did_a();
}
}
inline void work()
{
LL now=1;
LL t=10;
while(now<=n)
{
if(t<0) return;
Rebuild(t);
if(n>=t-1) Quick(t-1-now);
else Quick(n-now);
Ans=(ans[3][1]%m+mul(now,ans[3][2])%m+mul(Ans,ans[3][3])%m)%m;
now=t;
t*=10;
}
}
int main()
{
scanf("%lld%lld",&n,&m);
work();
printf("%lld\n",Ans);
return 0;
}
```\]

【[HNOI2011]数学作业】的更多相关文章

  1. bzoj2326: [HNOI2011]数学作业

    矩阵快速幂,分1-9,10-99...看黄学长的代码理解...然而他直接把答案保存在最后一行(没有说明...好吧应该是我智障这都不知道... #include<cstdio> #inclu ...

  2. BZOJ 2326: [HNOI2011]数学作业( 矩阵快速幂 )

    BZOJ先剧透了是矩阵乘法...这道题显然可以f(x) = f(x-1)*10t+x ,其中t表示x有多少位. 这个递推式可以变成这样的矩阵...(不会用公式编辑器...), 我们把位数相同的一起处理 ...

  3. [luogu P3216] [HNOI2011]数学作业

    [luogu P3216] [HNOI2011]数学作业 题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N 和 M,要求计算 Concatenate (1 ...

  4. P3216 [HNOI2011]数学作业 (矩阵快速幂)

    P3216 [HNOI2011]数学作业 题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 NN 和 MM ,要求计算 Concatenate (1 .. N ...

  5. [HNOI2011]数学作业 --- 矩阵优化

    [HNOI2011]数学作业 题目描述: 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N 和 M ,要求计算\(Concatenate(1..N)\; Mod\; ...

  6. 洛谷P3216 [HNOI2011] 数学作业 [矩阵加速,数论]

    题目传送门 数学作业 题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N和 M,要求计算 Concatenate (1 .. N)Mod M 的值,其中 C ...

  7. [HNOI2011]数学作业

    题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N 和 M,要求计算 Concatenate (1 .. N) Mod M 的值,其中 Concatenat ...

  8. P3216 [HNOI2011]数学作业

    题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N 和 M ,要求计算Concatenate (1 .. N) Mod M 的值,其中 Concatenat ...

  9. [HNOI2011]数学作业 矩阵快速幂 BZOJ 2326

    题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 NNN 和 MMM ,要求计算Concatenate(1..N) Concatenate (1 .. N) ...

  10. 洛谷P3216 [HNOI2011]数学作业

    题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N 和 M,要求计算 Concatenate (1 .. N) Mod M 的值,其中 Concatenat ...

随机推荐

  1. js中的table导出成Excel表格

    首先判断手否是IE,原因在于IE导出我用的是ActiveXObject,判断的方式很简单,只需要拿到window.navigator.userAgent即可进行判断,代码如下 function get ...

  2. eclipse F6和F8的问题

    # 首先大致说明一下F6和F8的作用: | 在debug模式下, F6的作用是跳到下一步,F8的作用是跳到下一个断点 # 情景: | 在eclipse以debug模式同时启动两个项目,并且两个项目都打 ...

  3. MVC参数自动装配

    在拿到一个类型的所有属性以及字段的描述信息后,就可以通过循环的方式,根据这些数据成员的名字去QueryString,Form,Session,Cookie读取所需的数据了. 就是遍历参数,然后用反射遍 ...

  4. HRBUST 1161——Leyni——————【线段树单点更新,区间查询】

    Leyni Time Limit: 3000 MS Memory Limit: 65536 KB 64-bit integer IO format: %lld , %llu Java class na ...

  5. bzoj 5291: [Bjoi2018]链上二次求和

    Description 有一条长度为n的链(1≤i<n,点i与点i+1之间有一条边的无向图),每个点有一个整数权值,第i个点的权值是 a_i.现在有m个操作,每个操作如下: 操作1(修改):给定 ...

  6. WCF寄宿在C#控制台,并用命令行启动

    公司运用wcf比较多,所以自己研究一下寄宿做个笔记,wcf寄宿在控制台有两种方式 第一种,直接在控制台程序内添加wcf服务. 第二种分别添加控制台程序和wcf服务应用程序,前者引用后者,并在app.c ...

  7. node.js压缩和解压缩

    推荐一个极其简单.及其好用的node.js的压缩和解压缩类库  compressing 支持格式: tar.gzip.tgz.zip 以zip为例,tar,tgz和gzip与zip相同. 压缩文件: ...

  8. node.js中的模板引擎jade、handlebars、ejs

    使用node.js的Express脚手架生成项目默认是jade模板引擎,jade引擎实在是太难用了,这么难用还敢设为默认的模板引擎,过分了啊!用handlebars模板引擎写还说的过去,但笔者更愿意使 ...

  9. guava的限流工具RateLimiter使用

    guava限流工具使用 非常详细的一篇使用博客:https://www.cnblogs.com/yeyinfu/p/7316972.html 1,原理:Guava RateLimiter基于令牌桶算法 ...

  10. Android的Overlay机制

    相关知识点的掌握: AAPT的使用和原理 编译脚本 参考:http://blog.sina.com.cn/s/blog_645b74b90101ojkc.html