Summing up Powers LightOJ
来源:互联网 发布:小漠鞋子淘宝店 编辑:程序博客网 时间:2024/05/18 13:28
Given N and K, you have to find(1K + 2K + 3K + ... + NK) % 232
Input
Input starts with an integer T (≤ 200), denoting the number of test cases.Each case contains two integers N (1 ≤ N ≤ 1015) and K (0 ≤ K ≤ 50) in a single line.
Output
For each case, print the case number and the result.
Sample Input
33 14 23 3
Sample Output
Case 1: 6Case 2: 30Case 3: 36
题意 : 给出n,k. 要你算出1-n的k次方的和。
n小于10的15次方 数据范围很大 结合题意,可以推出需要用矩阵快速幂。
太菜了太菜了,这题写了整整半天,还是在看了题解情况下。
#include<iostream>#include<queue>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<math.h>#include<deque>#include<set>#include<functional>using namespace std;const long long MAX=(long long)1<<32;// 初始化一定要这样写,不然是(int)1<<32 直接溢出.class mat{public: int sz; long long m[55][55]; mat(int sz){ memset(m,0,sizeof m); this->sz=sz; } mat(){memset(m,0,sizeof m);} mat operator * (mat a) { mat cnt(sz); for(int i=1;i<=sz;i++) { for(int j=1;j<=sz;j++) { for(int k=1;k<=sz;k++) cnt.m[i][j]+=(m[i][k]*a.m[k][j])%MAX; } } return cnt; }};mat E;void init(int sz){ memset(E.m,0,sizeof E.m); E.sz=sz+2; for(int i=0;i<=55;i++) { E.m[i][sz+2]=1; E.m[i][i]=1; } //杨辉三角初始化 for(int i=sz;i>=2;i--) { for(int j=sz+2;j>=i;j--) { E.m[i][j]=E.m[i+1][j+1]+E.m[i+1][j]; } } //第一排单独初始化 for(int i=0;i<55;i++) if(E.m[2][i]) E.m[1][i]=E.m[2][i];}mat pow(mat b,long long k){ mat res=mat(b.sz); for(int i=0;i<=res.sz+2;i++) { res.m[i][i]=1; } while(k) { if(k&1) res=res*b; b=b*b; k>>=1; } return res;}mat getQ(int sz){ mat ans=mat(sz+2); for(int i=1;i<=sz+2;++i) { ans.m[i][1]=1; } return ans;}int main(){ int T; int ca=1; scanf("%d",&T); while(T--) { long long n; long long k; scanf("%lld%lld",&n,&k); init(k); if(k==0) { printf("Case %d: %u\n",ca++,n); continue; } mat ans=pow(E,n-1)*getQ(k); printf("Case %d: %lld\n",ca++,ans.m[1][1]%MAX); }}
阅读全文
0 0
- Summing up Powers LightOJ
- Summing up Powers LightOJ
- 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(矩阵快速幂)
- LinghtOJ1132 Summing up Powers
- LightOJ 1132 Summing up Powers(矩阵快速幂+二项式定理)
- Light oj 1132 - Summing up Powers
- light oj 1132 Summing up Powers
- 矩阵快速幂lightoj1132 - Summing up Powers
- Light OJ 1132 Summing up Powers 矩阵快速幂
- Light oj 1132 Summing up Powers (矩阵快速幂)
- LightOJ1132---Summing up Powers (矩阵快速幂+二项式定理(简单推理))
- 【矩阵快速幂】LightOJ_1132_Summing up Powers
- uva_112_Tree Summing
- Android, IOS和QNX之比较
- ios-单例模式
- [POJ3737]UmBasketella
- 逆置单链表/求倒数第k个结点
- poj3301 Texas Trip (三分)
- Summing up Powers LightOJ
- javascript中常用的几种输出方式
- Vue2学习笔记:组件(Component)
- FZU 2261 浪里个浪 (多源最短路)(福州大学第十四届程序设计竞赛)
- java中函数问题Function
- 交换链表中相邻节点的位置
- 操作系统之存储器管理
- 写时拷贝方案分析 copy on write
- MySQL 之数据备份与恢复