题目描述
斐波拉契(Fibonacci)的数列如下形式,输出Fibonacci的第N(1<=N<=200)项。 1 1 2 3 5 8 13 21 34 55 ….
输入格式
一个数 N。
输出格式
第一个数为斐波那契数列的第 N 项。
样例
【样例输入】
10
【样例输出】
55
题解:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1001;
int a[maxn], b[maxn], c[maxn], n;
void input() {
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
scanf("%d", &n);
a[maxn - 1] = 1;
b[maxn - 1] = 1;
}
void add() {
int s, g = 0;
for (int i = maxn - 1; i > 0; i--) {
s = a[i] + b[i] + g;
c[i] = s % 10;
g = s / 10;
}
}
void output() {
int i = 1;
while (b[i] == 0 && i < maxn) i++;
for (int j = i; j < maxn; j++) {
printf("%d", b[j]);
}
}
int main() {
input();
for (int i = 3; i <= n; i++) {
add();
memcpy(a, b, sizeof(b));
memcpy(b, c, sizeof(c));
}
output();
return 0;
}