lightoj1070 - Algebraic Problem(Matrix)
来源:互联网 发布:淘宝店铺过户条件 编辑:程序博客网 时间:2024/05/16 16:56
题目意思很显然,最后就是构造矩阵;
(a^n-1 + b^n-1)(a + b) = a^n + b^n + ab*(a^n-2 + b^n-2);
令f(n) = a^n + b^n;
有:f(n) = f(n-1)*(a+b) - ab*f(n-2);
特别的是膜2^64对无符号数而言就是自动溢出。。。
/*****************************************Author :Crazy_AC(JamesQi)Time :2016/4/26File Name :*****************************************/// #pragma comment(linker, "/STACK:1024000000,1024000000")#include <iostream>#include <algorithm>#include <iomanip>#include <sstream>#include <string>#include <stack>#include <queue>#include <deque>#include <vector>#include <map>#include <set>#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <climits>using namespace std;#define MEM(x,y) memset(x, y,sizeof x)#define pk push_back#define lson rt << 1#define rson rt << 1 | 1#define bug cout << "BUG HERE\n"typedef long long LL;typedef unsigned long long ULL;typedef pair<int,int> ii;typedef pair<ii,int> iii;const double eps = 1e-8;const int inf = 1 << 30;const int INF = 0x3f3f3f3f;//const ULL MOD = 1ull << 64;int nCase = 0;typedef struct Matrix{ unsigned long long a[3][3];}Matrix;Matrix mul(Matrix A, Matrix B){ Matrix tmp; for (int i = 1;i <= 2;++i) { for (int j = 1;j <= 2;++j) { unsigned long long t = 0; for (int k = 1;k <= 2;++k) t = (t + A.a[i][k]*B.a[k][j]) ; tmp.a[i][j] = t; } } return tmp;}void Quick(Matrix org, Matrix& ans,ULL n) { while(n) { if (n & 1) ans = mul(org, ans); n >>= 1; org = mul(org, org); }}int main(){ //freopen("in.txt","r",stdin); //frepoen("out.txt","w",stdout); int t; cin >> t; while(t--) { ULL n, p, q; scanf("%llu%llu%llu", &p, &q, &n); Matrix org, ans; memset(ans.a, 0,sizeof ans.a); org.a[1][1] = p; org.a[1][2] = -q; org.a[2][1] = 1; org.a[2][2] = 0; ans.a[1][1] = p*p - 2*q; ans.a[2][1] = p; printf("Case %d: ", ++nCase); if (n == 0) { printf("%d\n",2); }else if (n == 1) { printf("%llu\n", p); }else { Quick(org, ans, n - 2); printf("%llu\n", ans.a[1][1]); } } return 0;}
0 0
- lightoj1070 - Algebraic Problem(Matrix)
- LightOJ 1070 Algebraic Problem
- LIGHT OJ1070 Algebraic Problem
- LOJ 1070 Algebraic Problem
- Algebraic Problem LightOJ
- Light oj 1070 - Algebraic Problem
- LightOJ 1070 - Algebraic Problem 矩阵快速幂
- uva 10655 Algebraic Problem(矩阵快速幂)
- LOJ 1070 - Algebraic Problem(矩阵快速幂啊)
- LightOJ 1070 Algebraic Problem (推导+矩阵快速幂)
- Lightoj 1070 Algebraic Problem(矩阵快速幂)
- LOJ1070:Algebraic Problem(矩阵快速幂 & 数学 a^n+b^n)
- Matrix chain multiplication problem
- hdu3666 THE MATRIX PROBLEM
- codechef Matrix Problem
- THE MATRIX PROBLEM
- hdu_3666_THE MATRIX PROBLEM
- Matrix Problem : Array Practice
- 12个顶级开发者社区网站帮助程序员走上人生巅峰
- hdu 5647 DZY Loves Connecting (树形dp)
- Filter-统一全站编码
- 图(graph)
- 欢迎使用CSDN-markdown编辑器
- lightoj1070 - Algebraic Problem(Matrix)
- 复习IO流
- centos7之lamp环境搭建
- Android应用性能调试
- 好朋友?陌生人?-------指针与数组
- 华为网络通信基一
- 【机器学习】MATLAB读取mnist数据库
- Codeforces Round #347 (Div. 2) D. Graph Coloring(最少需要选择多少个点,使得所有边的颜色相同)
- zoj3939 The Lucky Week 模拟