BZOJ 1002: [FJOI2007]轮状病毒
2017-09-01 20:15
357 查看
二次联通门 : BZOJ 1002: [FJOI2007]轮状病毒
/* BZOJ 1002: [FJOI2007]轮状病毒 基尔霍夫矩阵 + 高精 题解看的我一脸懵逼。。只能记结论了 */ #include <cstdio> #include <iostream> #define L 101 struct Int { int c[L], l; }; Int operator - (Int A, Int B) { register int i; A.c[1] += 2; for (i = 1; A.c[i] >= 10; ++ i) A.c[i] %= 10, ++ A.c[i + 1]; for (i = 1; i <= A.l; ++ i) { A.c[i] -= B.c[i]; if (A.c[i] < 0) A.c[i] += 10, -- A.c[i + 1]; } for (; !A.c[A.l]; -- A.l); return A; } Int operator * (Int A, int b) { register int i; for (i = 1; i <= A.l; ++ i) A.c[i] *= b; for (i = 1; i <= A.l; ++ i) A.c[i + 1] += A.c[i] / 10, A.c[i] %= 10; if (A.c[A.l + 1]) ++ A.l; return A; } #define Max 101 Int f[Max]; int Main () { int N; register int i; scanf ("%d", &N); f[1].l = f[2].l = 1; f[1].c[1] = 1, f[2].c[1] = 5; for (i = 3; i <= N; ++ i) f[i] = (f[i - 1] * 3) - f[i - 2]; for (i = f .l; i; -- i) printf ("%d", f .c[i]); return 0; } int ZlycerQan = Main (); int main (int argc, char *argv[]) {;}
相关文章推荐
- 【BZOJ 1002】 [FJOI2007]轮状病毒 【矩阵树定理】【留坑】
- BZOJ 1002: [FJOI2007]轮状病毒
- BZOJ 1002: [FJOI2007]轮状病毒【生成树的计数与基尔霍夫矩阵简单讲解+高精度】
- BZOJ 1002:[FJOI2007] 轮状病毒 (基尔霍夫矩阵生成树定理)
- BZOJ1002 [FJOI2007]轮状病毒
- 【FJOI2007】bzoj1002 轮状病毒
- BZOJ 1002 FJOI 2007 轮状病毒 暴力+找规律+高精度
- bzoj 1002: [FJOI2007]轮状病毒
- AC日记——[FJOI2007]轮状病毒 bzoj 1002
- bzoj 1002: [FJOI2007]轮状病毒
- BZOJ 1002 [FJOI2007]轮状病毒
- 【BZOJ1002】【FJOI2007】轮状病毒
- BZOJ1002: [FJOI2007]轮状病毒
- [bzoj1002]: [FJOI2007]轮状病毒(矩阵树定理)
- 【bzoj 1002】 轮状病毒 [FJOI2007]
- BZOJ1002 [FJOI2007]轮状病毒
- bzoj1002: [FJOI2007]轮状病毒
- BZOJ1002: [FJOI2007]轮状病毒
- bzoj 1002[FJOI2007]轮状病毒
- BZOJ 1002: [FJOI2007]轮状病毒