4870: [Shoi2017]组合数问题
来源:互联网 发布:seo全网优化指南 编辑:程序博客网 时间:2024/06/16 06:41
4870: [Shoi2017]组合数问题
Time Limit: 10 Sec Memory Limit: 512 MB
Submit: 295 Solved: 158
[Submit][Status][Discuss]
Description
Input
第一行有四个整数 n, p, k, r,所有整数含义见问题描述。
1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30 − 1
Output
一行一个整数代表答案。
Sample Input
2 10007 2 0
Sample Output
8
HINT
Source
黑吉辽沪冀晋六省联考
定义
f(i,j)=∑∞t=0Cj+tki
打个表不难发现,f(i,j)=f(i−1,j)+f(i−1,(j−1) mod k)
于是大力矩乘就可以了
#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int N = 51;typedef long long LL;int n,K,p,r;inline int Mul(const LL &x,const LL &y) {return x * y % p;}inline int Add(const int &x,const int &y) {return x + y < p ? x + y : x + y - p;}struct data{ int a[N][N]; data(){memset(a,0,sizeof(a));} data operator * (const data &b) { data c; for (int k = 0; k < K; k++) for (int i = 0; i < K; i++) for (int j = 0; j < K; j++) c.a[i][j] = Add(c.a[i][j],Mul(a[i][k],b.a[k][j])); return c; }}G;data ksm(LL y){ data ret; for (int i = 0; i < K; i++) ret.a[i][i] = 1; for (; y; y >>= 1LL) { if (y & 1LL) ret = ret * G; G = G * G; } return ret;}int main(){ #ifdef DMC freopen("DMC.txt","r",stdin); #endif cin >> n >> p >> K >> r; for (int i = 0; i < K; i++) ++G.a[(i - 1 + K) % K][i],++G.a[i][i]; data T = ksm(1LL * n * K); cout << T.a[0][r] << endl; return 0;}
0 0
- 4870: [Shoi2017]组合数问题
- BZOJ 4870 [Shoi2017] 组合数问题
- bzoj 4870: [Shoi2017]组合数问题
- BZOJ4870: [Shoi2017]组合数问题
- Bzoj4870:SHOI2017-组合数问题
- BZOJ4870: [Shoi2017]组合数问题
- [bzoj4870] [Shoi2017]组合数问题
- bzoj 4870: [Shoi2017]组合数问题 动态规划
- [DP 倍增] BZOJ 4870 [Shoi2017]组合数问题
- bzoj P4870 [Shoi2017]组合数问题
- BZOJ 4870: [Shoi2017]组合数问题 (递推+矩阵快速幂)
- 【BZOJ4870】组合数问题(SHOI2017)-矩阵优化DP
- [BZOJ4870][Shoi2017]组合数问题 矩阵快速幂
- jzoj5215&&bzoj4870[Shoi2017]组合数问题 dp+矩阵快速幂
- bzoj4870 [Shoi2017]组合数问题(dp+矩阵倍增)
- [BZOJ4870][SHOI2017]组合数问题 DP+矩阵快速幂
- 【jzoj5215】【BZOJ4870】【Shoi2017】【GDOI2018模拟7.9】【组合数问题】【矩阵快速幂】
- 循环矩乘——Luogu3746/BZOJ4870 [SHOI2017]组合数问题
- spring cloud学习笔记
- Java知识点(四)——多线程
- 551. Student Attendance Record I
- 编译opencv+opencv_contrib源码实现KCF跟踪算法
- Android 开发 Tip 9 -- TouchDelegate
- 4870: [Shoi2017]组合数问题
- java之hashset与hashmap总结
- Python 中的闭包(2)—— 一个栗子
- 二分贪心 D题
- 边缘独立(marginal independent)的理解及举例
- poco-1.7.8p2-all安装
- java如何求最大子数组的和 蛮力算法 动态规划算法
- struts2
- bfs,hash,康托展开(UESTC 485,Game)