题目链接:https://vjudge.net/problem/LightOJ-1132

题目意思:(1K + 2K + 3K + ... + NK) % 232


矩阵快速幂的题目一般都很短,这道题也一样就是这么简单。

思路:运用到了组合数a^k=C(k,0)*a^k+C(k,1)*a^(k-1)+C(k,2)*a^(k-2)+C(k,3)*a^(k-3)+C(k,4)*a^(k-4)+……C(k,k)*a^(k-k),运用这个式子我们可以构造以下矩阵。

 C(k,),   C(k,),   C(k,),   C(k,)………… …… C(k,k)         (n-)^k            (n)^k
C(k-,), C(k-,), C(k-,), C(k-,)…………C(k-,k-)    (n-)^(k-) (n)^(k-)
C(k-,), C(k-,), C(k-,), C(k-,)…………C(k-,k-)    (n-)^(k-) (n)^(k-)
C(k-,), C(k-,), C(k-,), C(k-,)…………C(k-,k-)    (n-)^(k-) = (n)^(k-)
……………………   *  0
……………………          
……………………     
C(,), C(,), C(,), C(,) (n-)^() (n)^()
C(,), C(,), C(,) (n-)^() (n)^()
C(,), C(,) (n-)^() (n)^()
C(k,), C(k,), C(k,), C(k,)………… …… C(k,k)     s(n-) s[n]

还有一点这道题有一个奇怪的mod数2^32对于这个膜数我们采用unsigned int自然溢出就好了,如果直接mod就会超时,这一点在以后遇到这个mod数的时候需要注意。

代码:

 //Author: xiaowuga
#include<bits/c++.h>
#define maxx INT_MAX
#define minn INT_MIN
#define inf 0x3f3f3f3f using namespace std;
typedef unsigned int ll;
long long n,size;
struct Matrix{
ll mat[][];
void clear(){
memset(mat,,sizeof(mat));
}
Matrix operator * (const Matrix & m) const{
Matrix tmp;
int i ,j,k;
tmp.clear();
for( i=;i<=size+;i++)
for( k=;k<=size+;k++){
if(mat[i][k]==) continue;
for( j=;j<=size+;j++){
tmp.mat[i][j]+=mat[i][k]*m.mat[k][j];
//tmp.mat[i][j]%=MOD;
}
}
return tmp;
}
};
Matrix POW(Matrix m,long long k){
Matrix ans;
memset(ans.mat,,sizeof(ans.mat));
for(int i=;i<=size+;i++) ans.mat[i][i]=;
while(k){
if(k&) ans=ans*m;
k=k>>;
m=m*m;
}
return ans;
}
int main() {
ll tranangle[][]={};
tranangle[][]=;
for(int i=;i<;i++){
tranangle[i][]=;
for(int j=;j<=i;j++)
tranangle[i][j]=tranangle[i-][j]+tranangle[i-][j-];
}
int T;
scanf("%d",&T);
for(int Case=;Case<=T;Case++){
scanf("%lld%lld",&n,&size);
Matrix m;
memset(m.mat,,sizeof(m.mat));
for(int i=;i<=size;i++){
for(int j=;j<=size;j++)
m.mat[i][j]=tranangle[i][j];
}
for(int i=;i<=size;i++)
m.mat[size+][i]=tranangle[size][i];
m.mat[size+][size+]=;
Matrix ans=POW(m,n-);
ll sum=;
for(int i=;i<=size+;i++){
sum+=ans.mat[size+][i];
}
printf("Case %d: %lld\n",Case,sum);
}
return ;
}

最新文章

  1. Xamarin. Android实现下拉刷新功能
  2. percona-toolkit中在线ddl
  3. 不安装Oracle客户端情况下使用PL/SQL 远程连接数据库
  4. asp.net+mysq 数据库操作类
  5. DEV控件Grid显示行号
  6. python socket 常见方法及 简单服务/客户端
  7. Mapreduce执行过程分析(基于Hadoop2.4)——(二)
  8. unity3d首次倒入工程文件出错Opening file Library/FailedAssetImports.txt failed解决方法
  9. java 通过网络 ntp 获取网络时间
  10. rbd块映射
  11. .net core 支付宝,微信支付 二
  12. 跟我一起读postgresql源码(七)——Executor(查询执行模块之——数据定义语句的执行)
  13. CentOS 7.3 minimal 开启网络服务
  14. 【经验随笔】 Tomcat多个APP使用相同名称环境变量导致问题
  15. capwap学习笔记——capwap的前世今生(转)
  16. 用Docker解决坑爹的环境搭建系列——ubuntu16.04 SSH
  17. 【CF809E】Surprise me! 树形DP 虚树 数学
  18. css布局 - 工作中常见的两栏布局案例及分析
  19. 决策树算法原理(ID3,C4.5)
  20. MySQL 5.7.19 忘记密码 重置密码 配置文件my.ini示例 服务启动后停止 log配置

热门文章

  1. action(四)
  2. ognl概念和原理详解
  3. ny712 探寻宝藏 ny61 传纸条(1)
  4. pyqt加载图片
  5. NFC读卡APP
  6. cocos2dx3.2升级Android5的坑
  7. myeclipse 上安装 Maven3&lt;转&gt;
  8. /proc/interrupts 和 /proc/stat 查看中断的情况
  9. 1.javascript语言精粹笔记
  10. [Python基础]Python中remove,del和pop的区别