神奇,矩阵乘法23333333333333333

递推式是很简单的(连我这种不会DP的人都写出来了。)

需要求出的是转移矩阵(还是叫系数矩阵的),也是最这个东西用快速幂。

这个东西的i,j大概就表示从i到j的方案数,那么原始的状态肯定是f[0]=1;对应的矩阵也就是[1,0,0,0,0,0,0,,,,,,]

貌似为了方便??!!这个矩阵貌似可以转化成f[i][i]=1的矩阵。。。所以。。(太BT了,,,还是我太垃圾)

还有最后的答案输出,想了想data[?][kk],?是什么也不好,一开始是0位,答案求的也是从0到b位的,所以就data[0][kk]吧。。(简直乱搞)

 #include<bits/stdc++.h>
#define inf 0x7fffffff
#define LL long long
#define N 100005
using namespace std;
inline int ra()
{
int x=,f=; char ch=getchar();
while (ch<'' || ch>'') {if (ch=='-') f=-; ch=getchar();}
while (ch>='' && ch<='') {x=x*+ch-''; ch=getchar();}
return x*f;
}
const int mod=1e9+;
int a[];
struct maxtri{
int n;
LL data[][];
maxtri(int tn=)
{
n=tn;
for (int i=; i<n; i++)
for (int j=; j<n; j++)
data[i][j]=;
}
void init()
{
for (int i=; i<n; i++) data[i][i]=;
}
};
maxtri operator *(maxtri a, maxtri b)
{
maxtri c(a.n);
int n=a.n;
for (int i=; i<n; i++)
for (int j=; j<n; j++)
for (int k=; k<n; k++)
c.data[i][j]=(c.data[i][j]+a.data[i][k]*b.data[k][j]%mod)%mod;
return c;
}
maxtri ksm(maxtri a, int b)
{
maxtri t(a.n),ans(a.n);
ans.init(); t=a;
while (b)
{
if (b&) ans=ans*t;
t=t*t;
b>>=;
}
return ans;
}
int main()
{
int n=ra(),b=ra(),kk=ra(),x=ra();
for (int i=; i<=n; i++)
a[ra()]++;
maxtri tmp(x);
for (int i=; i<x; i++)
for (int j=; j<x; j++)
for (int k=; k<; k++)
if ((i*+k)%x==j) tmp.data[i][j]+=a[k];
maxtri ans(x);
ans=ksm(tmp,b);
cout<<ans.data[][kk];
return ;
}

最新文章

  1. C语言基础(11)-随机数发生器
  2. Solr与Cassandra二级缓存实践
  3. windows 系统时钟
  4. 集成ShareSDK,分享成功后QQ和空间回调不执行的可能原因
  5. wp中TextBox在中文输入法下清空问题
  6. DDD~DDD从零起步架构说明
  7. JavaWeb学习之什么JSP、JSP是如何工作的、JSP语言(各种指令和九大内置对象)、EL表达式简单使用(5)
  8. PAT 基础编程题 4-11 求自定类型元素序列的中位数(希尔排序)
  9. [转载] 深入 superviser
  10. 全选Form &gt; Grid 的所有行
  11. 让Scrapy的Spider更通用
  12. c++ 定义宏常量
  13. 大白话Vue源码系列(01):万事开头难
  14. 利用grep-console插件使Intellij idea显示多颜色调试日志
  15. robotframework在3.7下的搭建
  16. 熟悉Junit单元测试方法
  17. flask使用原生ajax、不使用表单(Form)上传文件
  18. bootstrap4简单使用和入门01-简单表单的使用
  19. python导入requests库一直报错原因总结 (文件名与库名冲突)
  20. 使用Chrome开发者工具远程调试原生Android上的H5页面

热门文章

  1. SQL Server DATEADD() 函数 一步步使用教程
  2. 学习 Ansible Playbook,有这篇文章就够了!
  3. PE文件结构体-IMAGE_OPTIONAL_HEADER
  4. VUE - vuex state的使用
  5. 使用JavaScript实现一个简单的编译器
  6. pytesseract 识别率低提升方法
  7. Java自学-集合框架 hashCode原理
  8. redis简单的实现(java)
  9. 将.py文件转化成.exe
  10. RadioGroup的使用