[矩阵快速幂] LightOJ 1132 - Summing up Powers
来源:互联网 发布:js删除数组中的空元素 编辑:程序博客网 时间:2024/05/22 17:30
1132 - Summing up Powers
题意:给定
题解:
这个k次幂求和似乎有公式的,然而并不会,只能推关系了。
令
显然有
用
现在我们就要构造一个系数矩阵
这是一个
最后
复杂度
#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned int uint; //mod 2^32就是uint的自然溢出uint C[55][55] = {0};struct mat{ int sz; uint r[55][55]; mat(int _sz){ sz = _sz; memset(r, 0, sizeof(r)); } mat operator * (mat a){ mat res = mat(sz); for(int i = 1; i <= sz; ++i){ for(int j = 1; j <= sz; ++j){ for(int k = 1; k <= sz; ++k){ res.r[i][j] += r[i][k] * a.r[k][j]; } } } return res; }};mat getD(int k){ mat res = mat(k+2); res.r[1][1] = 1; for(int j = 2; j <= k+2; ++j){ res.r[1][j] = C[k][j-2]; } for(int i = 2; i <= k+1; ++i){ for(int j = i; j <= k+2; ++j){ res.r[i][j] = C[k-i+2][j-i]; } } res.r[k+2][k+2] = 1; return res;}mat getQ(int k){ mat res = mat(k+2); for(int i = 1; i <= res.sz; ++i){ res.r[i][1] = 1; } return res;}mat matpow(mat b, ll k){ mat res = mat(b.sz); for(int i = 1; i <= res.sz; ++i){ res.r[i][i] = 1; } while(k){ if(k&1) res = res*b; b = b*b; k >>= 1; } return res;}void init(){ C[1][1] = 1; for(int i = 1; i <= 50; ++i) C[i][0] = 1; for(int i = 2; i <= 50; ++i) for(int j = 1; j <= i; ++j) C[i][j] = C[i-1][j] + C[i-1][j-1];}int main(){ init(); int T, ca = 1; scanf("%d", &T); while(T--){ ll n; int k; scanf("%lld%d", &n, &k); if(k == 0){ printf("Case %d: %u\n", ca++, (uint)n); continue; } mat D = getD(k); mat ans = matpow(D, n-1) * getQ(k); printf("Case %d: %u\n", ca++, ans.r[1][1]); }}
0 0
- LightOJ - 1132 Summing up Powers 矩阵快速幂
- LightOJ 1132 - Summing up Powers 矩阵快速幂+排列组合
- [矩阵快速幂] LightOJ 1132 - Summing up Powers
- Lightoj 1132 Summing up Powers(矩阵快速幂)
- [矩阵快速幂] LightOJ 1142 - Summing up Powers (II)
- LightOJ 1132 Summing up Powers(矩阵快速幂+二项式定理)
- 矩阵快速幂lightoj1132 - Summing up Powers
- Light OJ 1132 Summing up Powers 矩阵快速幂
- Light oj 1132 Summing up Powers (矩阵快速幂)
- LightOJ - 1132 Summing up Powers
- Summing up Powers LightOJ
- Summing up Powers LightOJ
- LightOJ1132---Summing up Powers (矩阵快速幂+二项式定理(简单推理))
- 【矩阵快速幂】LightOJ_1132_Summing up Powers
- Light oj 1132 - Summing up Powers
- light oj 1132 Summing up Powers
- LinghtOJ1132 Summing up Powers
- lightOj 1132(矩阵快速幂)
- 任意精度整数运算(计算2的4000次方)
- Android发展历程
- 合并两个文件
- Error Downloading Packages:
- Android基础部分再学习---activity的状态保存
- [矩阵快速幂] LightOJ 1132 - Summing up Powers
- ubuntu14 配置java开发环境
- JavaScript Ajax 编程之应用篇
- Maven学习-使用Nexus搭建Maven私服
- nginx精准匹配, 一般匹配, 正则匹配
- 机器学习算法的Python实现 (3):CART决策树与剪枝处理
- Android快速开发系列 10个常用工具类
- Android:WebView基础
- 获取程序执行时的时间