bzoj1002
来源:互联网 发布:ubuntu优麒麟 编辑:程序博客网 时间:2024/06/06 03:28
这题我的做法就是普通的找规律,至于证明嘛。。在我刷题任务完成后再说~先应试嘛
注意要分奇偶数
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;struct node {int p[51], size;}f[110];inline void print(node a) {int rec;for(int i = 50; i >= 0; --i) if(a.p[i] != 0) {rec = i; break;}for(int i = rec; i >= 0; --i) {printf("%d", a.p[i]);}return ;}inline void multi(node a, node b, node &c) {int rec = 0;for(int i = 0; i <= max(a.size, b.size) + 1; ++i) {rec+= a.p[i] + b.p[i];c.p[i] = rec % 10;rec/= 10;}if(c.p[max(a.size, b.size)] == 0) c.size = max(a.size, b.size);else c.size = max(a.size, b.size) + 1;return ;}inline void multip(node a, node &b) {node c;memset(c.p, 0, sizeof(c.p));c.size = 0;for(int i = 0; i < a.size; ++i)for(int j = 0; j < b.size; ++j)c.p[i + j]+= a.p[i] * b.p[j];for(int i = 0; i <= a.size + b.size; ++i) {if(c.p[i] >= 10) {c.p[i + 1]+= c.p[i]/10;c.p[i]%= 10;}}int rec = 0;for(int i = 50; i >= 0; --i) if(c.p[i] != 0) {rec = i + 1; break;}b.size = rec;memcpy(b.p, c.p, sizeof(b.p));return ;}int main() {//freopen("1002.in", "r", stdin);int n; scanf("%d", &n);memset(f, 0, sizeof(f));if(n % 2 == 1) {f[1].p[0] = 1; f[2].p[0] = 3;f[1].size = 1; f[2].size = 1;for(int i = 3; i <= n; ++i) {multi(f[i - 1], f[i - 2], f[i]);}multip(f[n], f[n]);print(f[n]);}else {f[1].p[0] = 1; f[2].p[0] = 2;f[1].size = 1; f[2].size = 1;for(int i = 3; i <= n - 1; ++i) {multi(f[i - 1], f[i - 2], f[i]);}multip(f[n - 1], f[n - 1]);node x; x.size = 1; node ans, ans1, ans2;memset(ans.p, 0, sizeof(ans.p));memset(ans2.p, 0, sizeof(ans.p));memset(ans1.p, 0, sizeof(ans.p));multi(f[n - 1], f[n - 1], ans);multi(ans, ans, ans1);multi(f[n - 1], ans1, ans2);//printf("%d\n",ans2.size);print(ans2);}return 0;}
阅读全文
0 0
- BZOJ1002
- bzoj1002
- BZOJ1002
- bzoj1002
- bzoj1002
- BZOJ1002轮状病毒
- 【DP】bzoj1002
- [BZOJ1002]轮状病毒
- BZOJ1002轮状病毒
- [Bzoj1002][FJOI2007]轮状病毒
- bzoj1002[FJOI2007]轮状病毒
- 【bzoj1002】【FJOI2007】【轮状病毒】
- [高精度][BZOJ1002][FJOI2007]轮状病毒
- 【FJOI2007】【BZOJ1002】轮状病毒
- bzoj1002【fjoi2007】轮状病毒
- [BZOJ1002] [FJOI2007] 轮状病毒
- BZOJ1002 [FJOI2007]轮状病毒
- BZOJ1002: [FJOI2007]轮状病毒
- 测试
- 【bzoj 2152】聪聪可可(树的点分治)
- 统计学习方法读书笔记(三)
- HTML5 input
- 关于不支持多线程处理的并发问题
- bzoj1002
- mysql基础&重点知识总结及在python中的应用(2)
- C语言贪心算法之喷水装置(二)
- leetcode 372. Super Pow
- LOJ6000 「网络流 24 题
- Spring Bean生命周期
- CodeForces892B Wrath
- 程序员的8条宝贵经验!
- Golang简介