【HDOJ 1021】 Fibonacci Again (矩阵快速幂(裸))
2015-08-26 19:46
489 查看
【HDOJ 1021】 Fibonacci Again
没错 我又来发水题了。。。感觉做矩快会上瘾。。。这种原本绝壁超时的东西突然秒秒钟出来。。。这感觉。。。
爽 上代码
没错 我又来发水题了。。。感觉做矩快会上瘾。。。这种原本绝壁超时的东西突然秒秒钟出来。。。这感觉。。。
爽 上代码
#include <iostream> #include <cstdio> #include <cstring> using namespace std; typedef struct Matrix Matrix; struct Matrix { int mx[2][2]; void Out() { for(int i = 0; i < 2; ++i) { for(int j = 0; j < 2; ++j) printf("%d ",mx[i][j]); puts(""); } } void Init() { mx[0][0] = mx[0][1] = mx[1][0] = 1; mx[1][1] = 0; } void Emp() { mx[0][0] = mx[1][1] = 1; mx[0][1] = mx[1][0] = 0; } Matrix operator * (const Matrix a)const { Matrix x; memset(x.mx,0,sizeof(x.mx)); for(int i = 0; i < 2; ++i) for(int j = 0; j < 2; ++j) for(int k = 0; k < 2; ++k) x.mx[i][j] = (x.mx[i][j]+mx[i][k]*a.mx[k][j])%3; return x; } }; bool pow(int n) { Matrix a,b; a.Emp(); b.Init(); while(n) { if(n&1) a = a*b; b = b*b; n >>= 1; } return !((a.mx[0][0]*7+a.mx[0][1])%3); } int main() { int n; while(~scanf("%d",&n)) { printf("%s\n",pow(n)? "yes": "no"); } return 0; }
相关文章推荐
- HDOJ 2674 N!Again(找规律)
- 人工智能进入股市操盘获利巨大激荡股市
- See You Again
- B. Order Book------(Codeforces Round #317 [AimFund Thanks-Round] (Div. 2))
- A. Arrays------(Codeforces Round #317 [AimFund Thanks-Round] (Div. 2))
- Codeforces Round #317 [AimFund Thanks-Round] (Div. 1) A. Lengthening Sticks 分类
- 1.2句柄及 WinMain函数
- ACdream 1420 High Speed Trains(容斥原理)
- MainActivity,BadgeView
- STL源码剖析 [特殊的空间配置器](机智的type_traits.h)
- http://blog.csdn.net/opennaive/article/details/7514146
- 正确理解wait 和 notify
- Hadoop集群与RAID磁盘阵列
- POJ 2027 No Brainer(水~)
- POJ 1804 Brainman(归并排序)
- ACdream 1420 High Speed Trains(容斥原理+大数)
- Git review :error: unpack failed: error Missing tree
- [HDU 1151] Air Raid 最小路径覆盖
- HDU 4300 Clairewd’s message(KMP)
- USACO-Section 1.3 Barn Repair(贪心)