hdu 1757 A Simple Math Problem 矩阵优化+快速幂
2015-08-07 13:29
489 查看
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int n=10; int kt,m; struct Matrix { int mp ; }; Matrix mul(Matrix a,Matrix b) { int i,j,k; Matrix c; for(i=0; i<10; i++) for(j=0; j<10; j++) { c.mp[i][j]=0; for(k=0; k<10; k++) { c.mp[i][j]=(c.mp[i][j]+a.mp[i][k]*b.mp[k][j])%m; } } return c; } Matrix pow(Matrix t,int x) { if(x==1) return t; Matrix c; c=pow(t,x/2); c=mul(c,c); if(x&1) return mul(c,t); else return c; } int main() { int i,j,ans; Matrix a,t; while(~scanf("%d%d",&kt,&m)) { for(i=0;i<n;i++) scanf("%d",&a.mp[0][i]); if(kt<10) { printf("%d\n",kt%m); continue; } for(i=1;i<n;i++) for(j=0;j<n;j++) { if(i==j+1) a.mp[i][j]=1; else a.mp[i][j]=0; } t=pow(a,kt-9); for(i=0,ans=0;i<n;i++) { //printf("%d\n",ans); ans=(ans+t.mp[0][i]*(n-i-1))%m; } printf("%d\n",ans); } return 0; }
相关文章推荐
- C++网络编程笔记
- createjs初学-preloadJS的使用
- 局部变量返回问题
- 排序算法总结
- FatSecret Platform API
- C# 队列
- iOS第三方常用类库
- [经典算法] 八皇后
- JAVA 阻塞队列实现 生产者和消费者 模式
- Servlet的生命周期
- C++常量
- ubuntu远程连接退出后程序继续运行之screen 命令
- Ubuntu14.0 安装搜狗输入法后,登录不成功
- bootstrap 线上库
- 欢迎使用CSDN-markdown编辑器
- iOS常用第三方开源类库
- uva 705
- 任务调度(四)——ScheduledExecutorService替代Timer,实现多线程任务调度
- 天四地六
- android改变按下和放开组件时字体的颜色