http://172.20.6.3/Problem_Show.asp?id=1542

dp+矩阵乘法思路hin好想,对于我这种题目稍微学术就几乎什么也不会的人来说唯一的难点在于读题,因为一心想着划水题目没有看清楚,样例wa了一会最后仔细读题发现自己g的操作看错了,非常智障了

代码

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn=;
const long long modn=;
char ch[maxn];
int m,n;
struct mat{
long long e[][];
mat(){memset(e,,sizeof(e));}
void cle(){
for(int i=;i<=m;i++)e[i][i]=;
}
};mat ten[],f[maxn][maxn],g[maxn];
mat mul(mat x,mat y){
mat z;
for(int i=;i<=m;i++){
for(int j=;j<=m;j++){
for(int k=;k<=m;k++){
z.e[i][j]+=x.e[i][k]*y.e[k][j];
z.e[i][j]%=modn;
}
}
}
return z;
}
mat plu(mat x,mat y){
mat z;
for(int i=;i<=m;i++){
for(int j=;j<=m;j++){
z.e[i][j]=x.e[i][j]+y.e[i][j];
z.e[i][j]%=modn;
}
}
return z;
}
mat pow(mat x,long long k){
mat z;z.cle();
while(k){
if(k&)z=mul(x,z);
k/=;x=mul(x,x);
}
return z;
}
int main(){
scanf("%s%d",&ch,&m);n=strlen(ch);
ten[].cle();
for(int i=;i<m;i++)ten[].e[i][i+]=;
for(int i=;i<=m;i++)ten[].e[m][i]=;
for(int i=;i<=;i++)ten[i]=pow(ten[],i);
for(int i=n;i>=;i--){
f[i][i-].cle();
for(int j=i;j<=n;j++){
int z=ch[j-]-'';
f[i][j]=mul(pow(f[i][j-],),ten[z]);
}
}g[n+].cle();
for(int i=n;i>=;i--){
for(int j=i;j<=n;j++){
g[i]=plu(g[i],mul(g[j+],f[i][j]));
}
}
printf("%I64d\n",g[].e[m][m]);
return ;
}

最新文章

  1. 随感一:android handler传值更改ui
  2. JavaScript 2016年的概况
  3. Winform- 界面开发之布局控件&quot;WeifenLuo.WinFormsUI.Docking&quot;的使用
  4. sqlalchemy操作Mysql
  5. JAVA随笔篇一(Timer源代码分析和scheduleAtFixedRate的使用)
  6. CentOS 7 下安装mosquitto
  7. HDU2138(Miller-Rabin素数检测)
  8. union和union all的区别(面试常考)
  9. [No0000B5]C# 类型基础 值类型和引用类型 及其 对象判等 深入研究1
  10. 基于BP的B/S架构破解
  11. JAVA CAS原理深度分析 volatile,偏向锁,轻量级锁
  12. MySQL报错】ERROR 1558 (HY000): Column count of mysql.user is wrong. Expected 43, found 39.
  13. Ubuntu安装MediaInfo
  14. winserver2008安装tomcat+mysql+httpd+redis环境
  15. 打开的文件符合PDF/A标准,且已在只读模式下打开,以防被修改
  16. python的socket网络编程(二)
  17. Rails 中 mattr_accessor 一处文档错误
  18. echarts+thinkphp 学习写的第一个程序
  19. kuangbin专题十二 HDU1087 Super Jumping! Jumping! Jumping! (LIS)
  20. Samba和NFS文件共享

热门文章

  1. 【bug】vue-cli 3.0报错的解决办法
  2. Java多态的实现原理
  3. Python模块学习 - Functools
  4. Linux 入门记录:六、Linux 硬件相关概念(硬盘、磁盘、磁道、柱面、磁头、扇区、分区、MBR、GPT)
  5. C基础 算法实现层面套路
  6. Mysql 数据库学习笔记03 存储过程
  7. mac系统安装mysql
  8. Leetcode 之Add Binary(29)
  9. eclipse 配置jsp
  10. BZOJ 1010 玩具装箱toy(斜率优化DP)