大部分都想出来了,就是不会kmp生成矩阵、

首先要明白kmp失配里面是什么的位置,,,它是和它本身匹配的数,所以比较要用j+1!

然后枚举i的时候枚举的是前面的数都匹配的数再加上一个,所以枚举0~9统计所有结果扔到矩阵里

注意a矩阵一开始要赋初值  n=1的情况,不然输出0

矩阵:

样例的矩阵:

码:

#include<iostream>
#include<cstdio>
using namespace std;
char ch[55];
struct jz
{
int c,k;
int p[25][25];
}a,b,u,v;
int ans,i,j,K,n,m,sp[25],l;
jz operator *(jz x,jz y)
{int i,j,k;for(i=0;i<=x.k;i++)for(j=0;j<=y.c;j++)u.p[i][j]=0;u.k=x.k;u.c=x.c;for(i=0;i<=x.k;i++)for(j=0;j<=x.c;j++) for(k=0;k<=y.c;k++)u.p[i][k]=(u.p[i][k]+x.p[i][j]*y.p[j][k])%K;return u;
}
jz operator ^(jz x,int ci)
{int i,j,k;v.k=x.k;v.c=x.c;for(i=0;i<=x.k;i++)for(j=0;j<=x.c;j++)if(i==j)v.p[i][i]=1;else v.p[i][j]=0;while(ci){if(ci&1)v=v*x; ci>>=1;x=x*x;       }return v;
}
int main(){
scanf("%d%d%d",&n,&m,&K);
scanf("%s",ch+1);n--;j=0;for(i=2;i<=m;i++){while(j>0&&ch[j+1]!=ch[i])j=sp[j];if(ch[j+1]==ch[i])++j;sp[i]=j;}for(i=0;i<m;i++)for(l=0;l<=9;l++){j=i; while(j!=0&&ch[j+1]-'0'!=l)j=sp[j];if(ch[j+1]-'0'==l)b.p[j+1][i]++;else b.p[0][i]++;}b.c=m;b.k=m;a.c=0;a.k=m;a.p[0][0]=9;a.p[1][0]=1;a=(b^n)*a;for(i=0;i<m;i++)ans+=a.p[i][0],ans%=K;printf("%d",ans);
} 

2017.8.7 GT考试 思考记录相关推荐

  1. 2017.3.24 分裂游戏 思考记录

    事先说明:这不是好题解,这只是思考记录 同机房的xp都学博弈了..    感觉还是学学看吧 先来看一下简单的nim: 题目: Alice和Bob放置了N堆不同的石子,编号1..N,第i堆中有A[i]个 ...

  2. 2017.10.24 上升序列 思考记录

    终于有会做的题了... 一开始想用正常的lis ,然后从前往后扫, 由于最优查询区间在序列上是按顺序单调递增的,所以想记录每个点取哪个值跳到哪,这样是n*m logn的 然后发现既然是单调递增的那直接 ...

  3. 2017.10.7 括号序列 思考记录

    这个题看起来很简单,但细节比较麻烦.参考完别人的代码后才想出自己的解法的.. 一开始认为已匹配的括号是可以直接消的,所以就只维护了两个变量 但还有区间取反.. 由于和已配对的括号的顺序有关,所以不是很 ...

  4. 2017.9.28 约数研究 思考记录

    这个题一开始可能会想复杂, 然而它需要对答案的贡献进行归类 可以发现,一个约数对其倍数的数贡献是一样的,,所以可以考虑离散 所以直接对于每个数不好求,就可以考虑每个约数的贡献 而每个约数i就有n/i个 ...

  5. 2017.5.11 道路修建 思考记录

    这个线段树一眼秒了(主要是有前面的思考经验) 就是维护两个列对应线段上的形态.,比较好想的 但数据结构题有个特点--使你知道结构也不会做----会做也会很大概率爆零.... 所以数据结构题必须 小数据 ...

  6. 2017.5.9 积木大赛 思考记录

    为什么要把这个题放上来?因为这个题还是很有代表性的 首先必须要跳出模拟的思考: 可以忽视每一步具体的操作,直接看目标,这样就会总结出一些规律: 连续上升或连续下降的序列次数一定是最大值,因为每次都可以 ...

  7. 2017.4.25 解方程 思考记录

    这个题好乱啊..n*m就会炸,每个数还都可能是10^10000..这n*ai tm读进去都要10^6效率  . 一般这种似乎没有任何数论定理的东西范围还这么变态只能考虑随机化算法了.. 似乎可以用取模 ...

  8. 2017.3.29 报表统计 思考记录

    有生之年第一道浙江省选题(虽然历史久远并且很水) 记录每个位置数列的左端点和右端点 维护两颗splay   一颗维护全局最小差值,一颗维护相邻最小差值 对于全局splay:每次插入时记录路径取差值mi ...

  9. 2017.3.6 地精部落 思考记录

    其实这个题第一眼是没有任何思路的 强行无视题解,经过漫长的找规律,终于推出了一个可行的方法: f[i][0/1]i表示最高位的数字,0表示开始是上升,1表示开始是下降. 为什么会推出这个? 1.因为所 ...

最新文章

  1. 乐视欠122亿的图标给后浪的启示
  2. Selenium WebDriver- 操作 IFrame 中的页面元素
  3. 带宽测量:带宽测量工具下载
  4. 存储器间接寻址方式_8086中的数据存储器寻址模式
  5. python open函数_精选2个小例子,带你快速入门Python文件处理
  6. LeetCode输入字符串,倒序输出---C语言
  7. JavaScript基础之'script'Tag的使用
  8. 分布式红锁的waitTime的设计原理
  9. atitit.html编辑器的设计要点与框架选型 attilax总结
  10. 基于stm32单片机的电梯控制系统
  11. Svchost.exe病毒的简单处理
  12. 银耳椰椰——Alpha冲刺Day04
  13. 目标主机showmount -e信息泄露(CVE-1999-0554),如何禁止只允许特定主机使用showmount -e查看挂载列表
  14. h5 vue利用canvas实现手机签名并且可旋转功能
  15. 8道C语言笔试题及答案(2022发布)
  16. RDBMS(关系型数据库)与HBase的对比
  17. 手机病毒“僵尸网络”进入高发期
  18. Java代码混淆案例(附反编译工具)
  19. canal kafka camus整合
  20. access2000 性能

热门文章

  1. Docker简介和安装
  2. 2021-06-18激活函数的意义
  3. Pycharm更改快速规整代码快捷键
  4. mysql建立外键快捷方式_mysql建立外键
  5. Java中使用JNA实现全局监听Linux键盘事件
  6. excel if函数 android,Excel函数公式:多条件判断你还在用If函数来实现,那就真的Out了...
  7. 三菱伺服自动调谐_三菱伺服在执行离线自动调整之前
  8. java日期格式化代码的写法_Java中的`DateTimeFormatter`格式化代码中的`uuuu`与`yyyy`?...
  9. eva每一集片尾曲是谁唱的_求EVA新世纪福音战士的主题曲和片尾曲名字!!
  10. 静态成员函数与成员变量_C++静态成员变量及函数