博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1757 A Simple Math Problem 构造矩阵
阅读量:6655 次
发布时间:2019-06-25

本文共 2125 字,大约阅读时间需要 7 分钟。

题意:函数f(x),

        若 x < 10 f(x) = x. 

        若 x >= 10 f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10); 

        且 ai(0<=i<=9) 仅为 0 或 1 . 

        给定k,m,求f(k)%m;

思路:求一个递推函数的函数值,显然是矩阵快速幂,矩阵构造方法如下:

     

#include
#include
#include
using namespace std;typedef struct node{ int matrix[55][55];}Matrix;Matrix a,sa,unit;int n,k,t,mm;int num[50005];Matrix add(Matrix a,Matrix b){ int i,j; Matrix c; for(i=0;i<10;i++) { for(j=0;j<10;j++) { c.matrix[i][j]=a.matrix[i][j]+b.matrix[i][j]; c.matrix[i][j]%=mm; } } return c;}Matrix mul(Matrix a,Matrix b){ int i,j,h; Matrix c; for(i=0;i<10;i++) { for(j=0;j<10;j++) { c.matrix[i][j]=0; for(h=0;h<10;h++) { c.matrix[i][j]=c.matrix[i][j]+(a.matrix[i][h]*b.matrix[h][j]); c.matrix[i][j]%=mm; } } } return c;}Matrix cal(int e){ Matrix p,q; p=a,q=unit; while(e!=1) { if(e&1) { e--; q=mul(p,q); } else { e/=2; p=mul(p,p); } } p=mul(p,q); return p;}Matrix sum(int k){ Matrix temp,tnow; if(k==1) return a; temp=sum(k/2); if(k&1) { tnow=cal(k/2+1); temp=add(temp,mul(temp,tnow)); temp=add(temp,tnow); } else { tnow=cal(k/2); temp=add(temp,mul(temp,tnow)); } return temp;}int main(){ int i,j,ss,ans; while(scanf("%d%d",&k,&mm)!=EOF) { memset(num,0,sizeof(num)); memset(a.matrix,0,sizeof(a.matrix)); for(i=0;i<10;i++) { scanf("%d",&a.matrix[0][i]); unit.matrix[i][i]=1; if(i<9) a.matrix[i+1][i]=1; } if(k<10) { printf("%d\n",k%mm);continue; } sa=cal(k-9);//先求构造矩阵的k-9次方 ans=0; for(i=0;i<10;i++) { ans+=sa.matrix[0][i]*(9-i); ans%=mm; } printf("%d\n",ans); } return 0;}

 

转载于:https://www.cnblogs.com/dashuzhilin/p/4392850.html

你可能感兴趣的文章
***经验16.5.2总结
查看>>
thunar、nautilus右键添加 "压缩/解压"菜单
查看>>
基于jQuery的waterfall(瀑布流)布局
查看>>
heartheat+drbd高可用存储
查看>>
打包压缩
查看>>
Windows phone开发初体验之-页面导航
查看>>
groovy 闭包的用途
查看>>
前端工程师的进阶之路
查看>>
request
查看>>
Go 语言环境变量设置
查看>>
上海社保已经破产,全国呢?
查看>>
Centos7 配置 sendmail、postfix 端口号25、465
查看>>
ActiveMQ - 初体验,探讨JMS通信模型
查看>>
URL的井号(转自阮一峰)
查看>>
我的友情链接
查看>>
解密FFmpeg播放状态控制内幕
查看>>
我的友情链接
查看>>
90、MPLS基础配置实验
查看>>
51cto博客 存在csrf漏洞
查看>>
我的友情链接
查看>>