hdu1575
来源:互联网 发布:ftp 指定端口 编辑:程序博客网 时间:2024/05/16 17:43
水题。。矩阵快速幂
顺便看一下欧拉公式的模板。。。
//矩阵快速幂 #include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<vector> using namespace std;#define inf 9973int mat[12][12];/*int euler(int x)//cout<<euler(9973)<<endl;=9972{// 就是公式int i, res=x;for (i = 2; i < (int)sqrt(x * 1.0) + 1; i++)if(x%i==0) {res = res / i * (i - 1);while (x % i == 0) x /= i; // 保证i一定是素数}if (x > 1) res = res / x * (x - 1);return res;}*/void f(int n,int k){int i,j,u;int ans=0;int tmp[12][12];int res[12][12];memset(res,0,sizeof(res));memset(tmp,0,sizeof(tmp));for(i=0;i<n;i++) res[i][i]=1; while(k) { if(k&1) { for(i=0;i<n;i++) for(j=0;j<n;j++) tmp[i][j]=res[i][j]; memset(res,0,sizeof(res)); for(i=0;i<n;i++) { for(j=0;j<n;j++) { for(u=0;u<n;u++) res[i][j]=(res[i][j]+tmp[i][u]*mat[u][j])%inf; } } } for(i=0;i<n;i++) for(j=0;j<n;j++) tmp[i][j]=mat[i][j]; memset(mat,0,sizeof(mat)); for(i=0;i<n;i++) { for(j=0;j<n;j++) { for(u=0;u<n;u++) mat[i][j]=(mat[i][j]+tmp[i][u]*tmp[u][j])%inf; } } k>>=1; }for(i=0;i<n;i++){ans+=res[i][i];ans%=inf;}cout<<ans<<endl;}int main(){//freopen("q.in","r",stdin);int cas;int n,k,i,j;scanf("%d",&cas);while(cas--){scanf("%d%d",&n,&k);for(i=0;i<n;i++){for(j=0;j<n;j++){scanf("%d",&mat[i][j]);mat[i][j]%=inf;} }f(n,k);}}
0 0
- hdu1575
- hdu1575
- hdu1575
- hdu1575 矩阵乘法
- hdu1575 Tr A
- hdu1575 快速幂
- Tr A hdu1575
- HDU1575(快速幂)
- HDU1575-二分法-矩阵相乘
- HDU1575矩阵快速幂裸题
- hdu1575 Tr A
- hdu1575 Tr A
- 快速矩阵幂HDU1575
- hdu1575---Tr A
- hdu1575 Tr A
- 矩阵快速幂 HDU1575
- HDU1575 Tr A
- HDU1575 Tr A
- Invalidate和UpdateWindow的区别
- Android----ViewFlipper,ViewSwitcher(ImageSwitcher,TextSwitcher)
- (Nginx和PHP下)URL重写,TP实现URL重写
- 传苹果手表最早明年情人节开售 APP成掣肘
- [Test]测试相关资料
- hdu1575
- ndk使用
- ubuntu下GOROOT和GOPATH配置
- 教程 1:让我们通过例子来学习(Tutorial 1: Let’s learn by example)
- Java正则表达式
- 10款非常优秀的 HTML5 开发工具
- 常运用的DOS命令 Windows命令 快捷键
- hdu 2030 汉字统计
- MFC文件类CStdioFile读写中文文件的注意事项