题目链接: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 ;
}

lightoj1132—Summing up Powers (取膜技巧&&组合数应用)的更多相关文章

  1. NOIp 2014 解方程 【数学/秦九韶算法/大数取膜】By cellur925

    题目传送门 题意:求高次方程的解及其个数.其中 1° 我们知道,高次方程是没有求根公式的.但是利用逆向思维,我们可以进行“试根法”,因为题目中给出了所求根的范围.但是多项式系数过于吓人,达到了sxbk ...

  2. 1142 - Summing up Powers (II)

    1142 - Summing up Powers (II)    PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit ...

  3. ACM-ICPC 2018 焦作赛区网络预赛G Give Candies(隔板定理 + 小费马定理 + 大数取模,组合数求和)题解

    题意:给你n个东西,叫你把n分成任意段,这样的分法有几种(例如3:1 1 1,1 2,2 1,3 :所以3共有4种),n最多有1e5位,答案取模p = 1e9+7 思路:就是往n个东西中间插任意个板子 ...

  4. sgu 146. The Runner 取模技巧 难度:1

    146. The Runner time limit per test: 0.25 sec.memory limit per test: 4096 KB input: standard inputou ...

  5. lightOJ 1132 Summing up Powers(矩阵 二分)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1132 题意:给出n和m.求sum(i^m)%2^32.(1<=i<=n) ...

  6. 【BZOJ】3751: [NOIP2014]解方程【秦九韶公式】【大整数取模技巧】

    3751: [NOIP2014]解方程 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 4856  Solved: 983[Submit][Status ...

  7. ACM-较大的数乘法取模技巧*

    比如模数是1e15这种,相乘的时候爆LL了,但是又不想用大数,咋办呢? long long ksc(long long a, long long b, long long mod){ ; while( ...

  8. LightOJ 1132 Summing up Powers:矩阵快速幂 + 二项式定理

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1132 题意: 给定n.k,求(1K + 2K + 3K + ... + NK) % 2 ...

  9. LightOJ - 1132 Summing up Powers 矩阵高速幂

    题目大意:求(1^K + 2^K + 3K + - + N^K) % 2^32 解题思路: 借用别人的图 能够先打表,求出Cnm,用杨辉三角能够高速得到 #include<cstdio> ...

随机推荐

  1. 使用c++的cocos2d-x-3.0rc1程序公布apk

    (如今cocos2dx-x-3.0正式版已经出了.之前用的cocos2d-x-3.0rc1,就先用这个版本号吧) 0. 完毕C++项目 在cmd下使用cocos.py new命令,然后习惯性的在win ...

  2. API Management Architecture Notes

    Kong/Tyk/Zuul/strongloop/Ambassador/Gravitee IBM Reference Architecture for API Management: https:// ...

  3. js基本知识4

    1. 数组 看电影 电影院 座位 大的变量 里面可以放很多的值 var arr = [1,3,57]; var ar = new Array(); new object(); new Date() v ...

  4. Python 列表的操作

    list基本操作 #coding=utf-8 #列表 string = 'list' #字符串->列表 list1 = list(string) # ['l', 'i', 's', 't'] # ...

  5. VBA 获得绝对地址控制焦点的设置

    先上代码,有时间再补上说明. Dim Mefoucs As String MsgBox "你选定的当前单元格是:" & Selection.Address Mefoucs ...

  6. Groovy学习专栏

    今天新开了一个groovy的学习专栏,因为最近工作中会用到Groovy模板. 然后就是在网上找了一下Groovy模板相关的东西发现ibm中在2005年就有讲到这个的,我勒个去,这么早,我初中都还没毕业 ...

  7. MapReduce原理<转>

    江湖传说永流传:谷歌技术有"三宝",GFS.MapReduce和大表(BigTable)! 谷歌在03到06年间连续发表了三篇很有影响力的文章,分别是03年SOSP的GFS,04年 ...

  8. 文件模式设置用户ID/设置组ID/sticky bit_转

    S_ISUID  (04000)  set-user-ID (set process effective user ID on execve(2))S_ISGID  (02000)  set-grou ...

  9. 001杰信-创建MyEclipse与maven项目

    准备工作: 自己的私人仓库:

  10. ORDER BY 语句用于对结果集进行排序。

    ORDER BY 语句 ORDER BY 语句用于根据指定的列对结果集进行排序. ORDER BY 语句默认按照升序对记录进行排序. 如果您希望按照降序对记录进行排序,可以使用 DESC 关键字.