UVA 11885 - Number of Battlefields(斐波那契)
来源:互联网 发布:阿里数据分析 面试 编辑:程序博客网 时间:2024/05/21 01:56
11885 - Number of Battlefields
题意:给周长,求能围成的战场数目,不包括矩形。
思路:具体的递推没递推出来,但是看了网上一个规律,如果包括矩形的答案应该是斐波那契数列(但是奇数情况为0),然后减去矩形数目就是答案,矩形数目为n / 2 - 1,用矩阵快速幂就能求了。
具体的递推过程哪位大神能指点下。。。
代码:
#include <stdio.h>#include <string.h>const long long MOD = 987654321;int p;struct mat {long long v[2][2];mat() {memset(v, 0, sizeof(v));}mat operator *(mat c) {mat ans;for (int i = 0; i < 2; i++) {for (int j = 0; j < 2; j++) {for (int k = 0; k < 2; k++) {ans.v[i][j] = (ans.v[i][j] + v[i][k] * c.v[k][j] % MOD) % MOD; } } } return ans; } mat operator^(int k) { mat x = *this, ans; ans.v[0][0] = ans.v[1][1] = 1; while (k) { if (k&1) ans = ans * x;x = x * x;k >>= 1; } return ans; }};int main() {while (~scanf("%d", &p) && p) {if(p % 2) {printf("0\n"); continue;}mat pri;pri.v[0][0] = pri.v[0][1] = pri.v[1][0] = 1;pri = pri^(p - 4);printf("%lld\n",(pri.v[0][0] - ((long long)p / 2 - 1) + MOD) % MOD); }return 0;}
1 0
- UVA 11885 - Number of Battlefields(斐波那契)
- Number of Battlefields UVA
- uva 11885 - Number of Battlefields(矩阵快速幂)
- toj 4613 Number of Battlefields
- HDU 6198 number number number(斐波那契)
- 斐波那契数列的实现 The implement of nth Fibonacci number
- Fibonacci Number (斐波那契数列)
- Fibonacci Number (斐波那契数列)
- 1005 Number Sequence(广义斐波那契数列)
- uva 763 - Fibinary Numbers(斐波那契数)
- UVA 763 - Fibinary Numbers(高精度斐波那契)
- UVA 10183 斐波那契数列
- 数论基础:矩阵快速幂解斐波那契数列Yet another Number Sequence(UVA)
- HDOJ 1005 Number Sequence 斐波那契找循环
- LightOJ-1105 Fi Binary Number(斐波那契数列)
- NYOJ 题目655 光棍的yy(斐波那契数列 Fibonacci number)
- Number Sequence (斐波那契的矩阵快速幂)
- UVa 11069 A Graph Problem (斐波那契)
- ACM:二分查找,以及利用二分法来找上下界
- ViewPager获取当前显示的View
- Delphi2007升级到Delphi 2010总结
- java常见错误以及可能原因集锦
- Java实现表达式求值(原创,跟书上的不一样)
- UVA 11885 - Number of Battlefields(斐波那契)
- 曾被追逐的流量正在遭遇贬值
- extjs_08_界面布局
- java集成开发环境构建
- windows7 中 wacom数位板如何关闭点击水波 和长按右键这两个特效
- shell之“>/dev/null 2>&1” 详解
- 结束了
- LeetCode Rotate Image
- js with onsubmit