1 #include <bits/stdc++.h>
2 using namespace std;
3 struct node
4 {
5 int val;
6 int tag;
7 node(int a = 0, int b = 0) : val(a), tag(b){}
8 };
9 long long fib(int x)
10 {
11 stack<node> s;
12 long long sum = 0;
13 do
14 {
15 while (x > 2)
16 {
17 s.push(node(x, 1));
18 x--;
19 }
20 sum++;
21 while (!s.empty())
22 {
23 node temp = s.top(); s.pop();
24 if (temp.tag == 1)
25 {
26 temp.tag = 2;
27 s.push(temp);
28 x = temp.val - 2;
29 break;
30 }
31 }
32 } while (!s.empty());
33 return sum;
34 }
35
36 int main()
37 {
38 int v[100];
39 v[1] = v[2] = 1;
40 for (int i = 3; i <= 20; i++)
41 v[i] = fib(i);
42 for (int i = 1; i <= 20; i++)
43 cout << v[i] << endl;
44 }