Lightoj 1070 Algebraic Problem(矩阵快速幂)
来源:互联网 发布:蝙蝠侠游戏知乎 编辑:程序博客网 时间:2024/05/17 03:24
题意:给你a+b和a*b的值,求a^n+b^n
思路:
因为是膜2^64,所以直接开unsigned long long 就行
代码:
#include<iostream>#include<cstdio>#include<cstring>using namespace std;typedef unsigned long long ll;int n, m;struct node{ ll s[3][3]; node() {} node(ll s1, ll s2, ll s3, ll s4) { s[1][1] = s1; s[1][2] = s2; s[2][1] = s3; s[2][2] = s4; }};node mul(node a, node b){ node t; memset(t.s, 0, sizeof(t.s)); for(int i = 1; i <= 2; i++) for(int j = 1; j <= 2; j++) for(int k = 1; k <= 2; k++) t.s[i][j] = (t.s[i][j]+a.s[i][k]*b.s[k][j]); return t;}node mt_pow(node p, int k){ node q; memset(q.s, 0, sizeof(q.s)); for(int i = 1; i <= 2; i++) q.s[i][i] = 1; while(k) { if(k%2) q = mul(p, q); p = mul(p, p); k /= 2; } return q;}int main(void){ int t, ca = 1; cin >> t; while(t--) { ll p, q; int n; scanf("%llu%llu%d", &p, &q, &n); node base = node(p, 1, -q, 0); printf("Case %d: ", ca++); ll f1 = p; ll f2 = p*p-2*q; if(n == 0) puts("2"); else if(n == 1) printf("%llu\n", f1); else if(n == 2) printf("%llu\n", f2); else { node ans = mt_pow(base, n-2); printf("%llu\n", f2*ans.s[1][1]+f1*ans.s[2][1]); } } return 0;}
阅读全文
2 0
- LightOJ 1070 - Algebraic Problem 矩阵快速幂
- LightOJ 1070 Algebraic Problem (推导+矩阵快速幂)
- Lightoj 1070 Algebraic Problem(矩阵快速幂)
- LOJ 1070 - Algebraic Problem(矩阵快速幂啊)
- LightOJ 1070 Algebraic Problem
- uva 10655 Algebraic Problem(矩阵快速幂)
- LOJ1070:Algebraic Problem(矩阵快速幂 & 数学 a^n+b^n)
- Algebraic Problem LightOJ
- LOJ 1070 Algebraic Problem
- Light oj 1070 - Algebraic Problem
- lightOj 1132(矩阵快速幂)
- LightOj 1332 矩阵快速幂
- lightoj 1006 矩阵快速幂
- LightOj 1006(矩阵快速幂)
- lightoj 1052 矩阵快速幂
- LightOJ-1052-矩阵快速幂
- LightOj 1268 Unlucky Strings (KMP+矩阵快速幂)
- LightOJ 1065 Number Sequence(矩阵快速幂)
- tensorflow实现线下回归、softmax回归、bp神经网络
- 我曾经爱过你---I Loved You
- nwjs(node-webkit)桌面app自定义窗体事件、nwjs托盘tray的实现
- Colorful Tree(逆向思维)
- C++底层数据结构原理
- Lightoj 1070 Algebraic Problem(矩阵快速幂)
- linux-磁盘的管理和硬盘阵列
- Linux Discuz 安装
- Linux上安装WordPress 汉化版
- WordPress重置登陆密码
- QWidget,QMainWindow和QDialog的区别
- 笔记9 《C++ 大学教程》
- 201503-1 图像旋转
- 关于mapreduce读取文件分片会不会断行