其实呢,自己乱测试数据也是会发现BUG的

一直都会是自己的代码错误!

折腾了我一大晚上到头来竟然矩阵数组的存储也是long long类型

不过终归是解决了   稍微学到一点教训吧

一个是写完代码  自己可以代几组数据试一下  有时候会出现那种很明显的错误  比如这个题出现负数神马啦

再一个经验是Long long 真的比int 好用??

自己的程序几乎每个地方都可能超出范围

再最后是简单的程序也要多练 现在 自己敲一遍矩阵的乘法

#include<stdio.h>
#include<string.h>
#define da 100000007
struct M
{long long s[3][3];
};
struct M multiply(struct M a,struct M b){struct M c;memset(c.s,0,sizeof(c.s));for(int i=0;i<3;i++)for(int j=0;j<3;j++)for(int k=0;k<3;k++)c.s[i][j]=(c.s[i][j]+(a.s[i][k]*b.s[k][j])%da)%da;return c;
}
struct M paw(struct M a,long long t){if(t==1)return a;else{struct M b=paw(a,t/2);if(t&1){return multiply(multiply(b,b),a);}elsereturn multiply(b,b);}
}
int main()
{struct M a,c;a.s[0][0]=3;a.s[0][1]=2;a.s[0][2]=1;a.s[1][0]=1;a.s[1][1]=0;a.s[1][2]=0;a.s[2][0]=0;a.s[2][1]=1;a.s[2][2]=0;int a1,a2,a3;long long n;while(scanf("%d%d%d%lld",&a1,&a2,&a3,&n)!=EOF){if(n==0) { printf("%d\n",a1%da);}else if(n==1) {printf("%d\n",a2%da);}else if(n==2) { printf("%d\n",a3%da);}else{c=paw(a,n-2);long long x=(c.s[0][0]*(a3%da)+c.s[0][1]*(a2%da)+c.s[0][2]*(a1%da))%da;printf("%lld\n",x);}}return 0;
}

  按位与“&”功能强大?

for(int i=0;i<N;i++)
        for(int j=0;j<N;j++)
           for(int k=0;k<N;k++)
              {c.s[i][j]+=(a.s[i][k]%da)*(b.s[k][j]%da);
               c.s[i][j]%=da;//因为各对应行列为i,j
              }//也对

以后矩阵快速幂用这个自己写的吧....

转载于:https://www.cnblogs.com/cgf1993/archive/2013/04/12/3017226.html

neu1250矩阵快速幂哪~~相关推荐

  1. 矩阵快速幂+构造方法

    与快速幂一样,可以将递推式通过二进制的方式来进行优化,这个学了快速幂就是十分容易理解 大概的板子如下: struct mat///自己定义大小的矩阵 {ll m[11][11]; }; mat mul ...

  2. 【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂

    原文链接 https://www.cnblogs.com/cly-none/p/SRM701Div1C.html 题意:定义"Fibonacci string"为没有连续1的01串 ...

  3. 快速幂 + 矩阵快速幂

    快速幂 1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #define LL lo ...

  4. HDU4549(矩阵快速幂+快速幂)

    f(n)=a^f(n-1) + b^f(n-2):计算矩阵部分用矩阵快速幂:计算a的幂次和b的幂次用快速幂. #include<iostream> #include<algorith ...

  5. [HNOI2008]GT考试[矩阵快速幂+kmp优化的dp]

    解题思路:假如说我们用f[i]表示长度为i的串能组合成无不吉利数字的组合的个数的话我们无法找到f[i]和f[i+1]的关系,就是我们下一位填某个数字会不会出现不吉利串,这就和你前面的串末尾于不吉利串重 ...

  6. I-Matrix Power Series POJ - 3233 矩阵快速幂+分治

    I-Matrix Power Series POJ - 3233 矩阵快速幂+分治 Problem Description Given a n × n matrix A and a positive ...

  7. H - Fibonacci POJ - 3070 (矩阵快速幂)

    H - Fibonacci POJ - 3070 (矩阵快速幂) Description In the Fibonacci integer sequence, F0 = 0, F1 = 1, and ...

  8. HDU 6185 Covering 矩阵快速幂 递推

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6185 题目描述: 一个4*n的矩形, 你用1*2的矩形覆盖有多少种方案, n <= 1e18 ...

  9. bzoj 1409 Password 矩阵快速幂+欧拉函数

    可以发现,该数组的mi就是斐波那契数列 所以要矩阵快速幂搞出第n位 但是斐波那契数列上涨的很快,这就需要欧拉定理了 p^phi(q)%q=1(gcd(p,q)==1) p是素数,所以可以用 然后需要5 ...

最新文章

  1. 00-elasticsearch的pom文件
  2. java编译器使用教程_Java编译器API简介
  3. spring的ModelAndView
  4. Android--pendingIntent Intent
  5. matlab 滤波器设计 coe_一种半带滤波器的低功耗实现方法
  6. 计算机专业怎样提升竞争力,新形势下如何提高计算机专业学生就业竞争力.doc...
  7. java service 事物_Service 事务(JdbcUtils 升级)
  8. md 生成目录 码云_搭建简易博客方案
  9. ios设计规范_e微课5期:ios设计规范带来的设计细节(下篇)
  10. SpringBoot非官方教程 | 第三篇:SpringBoot用JdbcTemplates访问Mysql
  11. 对称矩阵、Hermite矩阵、正交矩阵、酉矩阵、奇异矩阵、正规矩阵、幂等矩阵、合同矩阵、正定矩阵...
  12. Android开发之异步消息处理机制AsyncTask
  13. FISCO BCOS 区块链应用开发步骤
  14. 廖雪峰Git学习 | 笔记二:修改以及版本回退
  15. 【转载】大学生必备软件免费自学视频教程,让那些培训班都见鬼去吧
  16. GD32f103介绍第二章
  17. 鸿蒙之始有几个老婆,先天五太
  18. java做度量衡换算器_简易单位换算器_度量衡单位转换
  19. 【转载 | 强化学习】Curriculum Learning和Self-paced Learning的相关知识及应用
  20. 体脂手环、体脂秤等产品的体脂测量原理及技术方案分析

热门文章

  1. 排序算法对比、总结(Python代码)
  2. 算法移植优化(七)cmake常用函数记录
  3. 什么叫python代码的优化_优化Python代码
  4. java基本语法心得_Java学习笔记(一)——基础语法(上)
  5. java中uri什么意思,java URI URL 个人理解。
  6. 小程序的 rpx布局问题
  7. EOJ Monthly 2019.2 E 中位数 (二分+中位数+dag上dp)
  8. Java-keepalived
  9. REST framework(2)
  10. PHP结合Redis来限制用户或者IP某个时间段内访问的次数