题意:

已知:

当x<10时:f(x)=x

否则:f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + ……+ a9 * f(x-10);

求:f(x)%m的值。

思路:

矩阵快速幂加速递推。 嗯嗯

// by SiriusRen
#include <cstdio>
#include <cstring>
using namespace std;
int cases,k,ans,a[10][10],mod;
struct matrix{int a[10][10];void init(){memset(a,0,sizeof(a));}}first,cpy,td;
matrix mul(matrix &a,matrix &b,int x){
matrix temp;temp.init();
for(int i=0;i<10;i++)
for(int j=0;j<x;j++)
for(int k=0;k<10;k++)
temp.a[i][j]=(a.a[i][k]*b.a[k][j]+temp.a[i][j])%mod;
return temp;
}
int main(){
while(~scanf("%d%d",&k,&mod)){
cpy.init();first.init();
ans=0;
for(int i=0;i<10;i++)scanf("%d",&first.a[9][9-i]),cpy.a[9][9-i]=first.a[9][9-i];
for(int i=0;i<9;i++)first.a[i][i+1]=cpy.a[i][i+1]=1;
for(int i=0;i<10;i++)td.a[i][0]=i;
if(k<10)printf("%d\n",k%mod);
else{k-=10;
while(k){
if(k&1)first=mul(cpy,first,10);
cpy=mul(cpy,cpy,10);k>>=1;
}
first=mul(first,td,1);
printf("%d\n",first.a[9][0]);
}
}
}

最新文章

  1. poj1062 昂贵的聘礼
  2. ARP协议格式、ARP运行机制入门学习
  3. 猫都能学会的Unity3D Shader入门指南
  4. JS 跨域问题浅析及解决方法优缺点对比(转)
  5. inline和宏之间的区别
  6. Sql 解释
  7. (转)PHP获取今天、昨天、明天的日期
  8. windows和linux下获取当前程序路径以及cpu数
  9. PIE使用阴影后的背景透明方法
  10. mysql存入中文乱码问题
  11. 呵呵哒,LNMP下通过fread方式下载文件时,中文名称文件找不到文件
  12. python 特殊方法实例
  13. $(function(){})和window.onload的区别
  14. 后台返回excel文件流,js下载
  15. php快速定位当前调用的类的位置
  16. pandas绘图
  17. IP地址分类以及子网划分
  18. Go语言学习之3 流程控制、函数
  19. linux命令学习之:du
  20. 使用docusaurus 搭建开发&amp;&amp;api &amp;&amp; 博客站点

热门文章

  1. 第八周读书笔记(人月神话X月亮与六便士)——到底什么才是一个程序员的自我修养?
  2. 03--SQLtie三言两语SQLtie链接(join)
  3. ES : 软件工程学的复杂度理论及物理学解释
  4. C# 生成Model和DAL
  5. vc++绘图,颜色
  6. 洛谷 P1540 乌龟棋
  7. [SDOI2016]生成魔咒(后缀自动机)
  8. 浅谈urllib和requests
  9. BA--近零能耗示范楼(西门子-中国建筑科学研究院院内)
  10. 使用joomla通过CSV文件上传数据存入数据库并使用JavaScript验证码是否符合规则