先看看快速幂

int t,r,n;

void liu(int n)

{

if(n==1) {r=t;return;}

liu(n/2);  //递归求出 n/2 幂

r*=r;     //

if(n%2==1) r*=t; //判断奇、偶

}

矩阵连乘:

If x >= 10

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

(f(n),f(n-1),….,f(n-9))=(f(9),….f(0))* 矩阵 的n-9 次方

Hdu 1757

#include<stdio.h>

#include<string.h>

int i,j,k,n,m;

int t[10][10],r[10][10],b[10][10];

void ju(int c[10][10],int d[10][10])

{

memset(b,0,sizeof(b));

for(i=0;i<10;i++)

for(j=0;j<10;j++)

for(k=0;k<10;k++) b[i][j]+=c[i][k]*d[k][j]%m;

for(i=0;i<10;i++)

for(j=0;j<10;j++) c[i][j]=b[i][j]%m;

}

void liu(int n)

{

if(n==1) return;

liu(n/2);ju(r,r);

if(n&1) ju(r,t);

}

void main()

{

memset(t,0,sizeof(t));

for(i=0;i<9;i++) t[i][1+i]=1;

//for(i=0;i<9;) t[i][++i]=1; //不知道为什么用这个循环的时候就wa,求高手指教

while(scanf("%d%d",&n,&m)!=EOF)

{

if(n<10) {printf("%d\n",n%m);continue;}

for(i=0;i<10;i++) scanf("%d",&t[i][0]);

memcpy(r,t,sizeof(r));

liu(n-9);

for(i=n=0;i<9;i++) n+=(9-i)*r[i][0]%m;  //注意这里是 9-i

printf("%d\n",n%m);

}

}

转载于:https://www.cnblogs.com/jufu/archive/2012/03/25/2416294.html

hdu 1757 矩阵连乘相关推荐

  1. hdu 1757(矩阵快速幂)

    题意:公式如下 If x < 10 f(x) = x. If x >= 10 f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + -- + a ...

  2. HDU 1757 A Simple Math Problem(矩阵快速幂)

    题目链接 题意 :给你m和k, 让你求f(k)%m.如果k<10,f(k) = k,否则 f(k) = a0 * f(k-1) + a1 * f(k-2) + a2 * f(k-3) + -- ...

  3. hdu 4291 矩阵幂 循环节

    http://acm.hdu.edu.cn/showproblem.php?pid=4291 凡是取模的都有循环节-----常数有,矩阵也有,并且矩阵的更奇妙: g(g(g(n))) mod 109  ...

  4. HDU 1757 A Simple Math Problem (矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1757 在吴神的帮助下才明白如何构造矩阵,还是好弱啊. 此处盗一张图 1 #include <io ...

  5. hdu 1757 A Simple Math Problem 构造矩阵

    题意:函数f(x), 若 x < 10 f(x) = x. 若 x >= 10 f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + -- + ...

  6. HDU - 1757 A Simple Math Problem(矩阵快速幂,水题)

    题目链接:点击查看 题目大意:实现公式: f(x)=x,x<10 f(x)=a0*f(x-1)+a1*f(x-2)+--+a9*f(x-10) 题目给出a0~a9,一个n和一个m,要求输出f(n ...

  7. 43行代码AC——HDU 1757 A Simple Math Problem(矩阵快速幂,附快速幂讲解)

    一道经典的矩阵快速幂模板题. 传送门1-->快速幂基本思想 传送门2-->矩阵快速幂讲解(教主传授) 代码(去掉空行43行) #include<iostream> #inclu ...

  8. 【HDU - 1757】A Simple Math Problem (矩阵快速幂)

    题干: Lele now is thinking about a simple function f(x). If x < 10 f(x) = x.  If x >= 10 f(x) = ...

  9. HDU - 1757 A Simple Math Problem (矩阵快速幂)

    Lele now is thinking about a simple function f(x). If x < 10 f(x) = x.  If x >= 10 f(x) = a0 * ...

最新文章

  1. 《机器学习技法》---模型聚合
  2. C#中File的使用
  3. 牛人 20000 字的 Spring Cloud 总结,太硬核了~
  4. 关于GC.Collect在不同机器上表现不一致问题
  5. 什么是java双亲委派机制
  6. 解决svn错误:post-commit hook failed (exit code 1) with output
  7. 美团点评云真机平台实践
  8. vimdiff的简单使用
  9. 关于电子通信的一些概念
  10. 骑行日志2011滇藏珠峰尼泊尔青藏 - 记那些逝去的青春
  11. 十进制转换为十二进制 Java
  12. FFmpeg转换ts为mp4
  13. java点赞判断恶意点击_重庆网络营销教你使用对恶意点击的必杀技!
  14. 计算机组策略定时开机脚本,批处理+组策略 实现规定时间段无法开机and定时关机...
  15. Verilog语言语句介绍
  16. 重写hashcode方法需要重写equals方法吗?为什么?
  17. 小米手机android目录在哪里设置字体,在哪里修改小米手机的字体大小
  18. JavaScript基础(4)_强制类型转换
  19. Winform(C#) 国内开源美化控件主题库3: HZHControls
  20. 使用python绘制有效性前沿

热门文章

  1. 使用PowerDesigner 设计SQL Server 数据库
  2. 傅雷家书摘抄:怎么脱单
  3. 关于svn不能cleanup的问题
  4. CDE桌面环境中自动启动应用程序图形界面
  5. thinkphp源码分析(一)—开门篇
  6. 大牛是怎么思考设计MySQL优化方案
  7. 【Linux】02-Linux远程管理常用命令
  8. Spring系列之AOP分析之为目标类挑选合适的Advisor(五)
  9. Educational Codeforces Round 37 (Rated for Div. 2)
  10. Web认证及API的 使用TOKEN的一些思考