HDU-1715.(大菲波数)
Posted bianjunting
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU-1715.(大菲波数)相关的知识,希望对你有一定的参考价值。
本题大意:给定一个n,让你计算并输出第n个菲波数。
本题思路:主要就是模拟加法,其它都好说。
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 using namespace std; 5 6 const int maxn = 1e5; 7 int num, n, now, idx, tot1, tot2; 8 struct Fbn { 9 int front[maxn], ans[maxn]; 10 } fbn; 11 12 int main () { 13 scanf("%d", &num); 14 while(num --) { 15 scanf("%d", &n); 16 memset(fbn.front, 0, sizeof(fbn.front)); 17 memset(fbn.ans, 0, sizeof(fbn.ans)); 18 fbn.ans[0] = fbn.front[0] = 1; 19 if(n == 1 || n == 2) { printf("1 "); continue;} 20 tot1 = tot2 = 1; 21 for(now = 3; now <= n; now ++) { 22 int i = 0, j = 0, c = 0; 23 while(i < tot1 && j < tot2) { 24 int t = fbn.ans[i]; 25 fbn.ans[i] = (fbn.ans[i] + fbn.front[j] + c) % 10; 26 c = (t + fbn.front[j] + c) / 10; 27 fbn.front[j] = t; 28 i ++, j ++; 29 if(c && i == tot1) tot1 ++; 30 if(tot1 > tot2) tot2 ++; 31 } 32 } 33 for(int i = tot1 - 1; i >= 0; i --) 34 printf("%d", fbn.ans[i]); 35 printf(" "); 36 } 37 return 0; 38 }
以上是关于HDU-1715.(大菲波数)的主要内容,如果未能解决你的问题,请参考以下文章