#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned long long ull; const ll MOD = 1000000007; #define rep(i,n) for(int i=0;i=0;i--) #define all(x) (x).begin(),(x).end() int main() { const int N = 5; vector A(N); rep(i, N) cin >> A[i]; reverse(all(A)); //フィボナッチ数の計算 vector fib; fib.push_back(1); fib.push_back(1); while (fib[fib.size() - 1] <= 10000000000000000) { fib.push_back(fib[fib.size() - 1] + fib[fib.size() - 2]); } //フィボナッチ数は先頭の2項がわからないと連続しているか判断できない //A[0]の確認 auto start = lower_bound(all(fib), A[0]); if (A[0] != *start) { cout << 0 << endl; return 0; } //A[1]の確認 if (A[0] == 1) { //1だけ2回出てくるため調整 if (A[1] != 2 && A[1] != 1) { cout << 1 << endl; return 0; } } else { //次の数と一致しているか確認 if (*(start + 1) != A[1]) { cout << 1 << endl; return 0; } } int count = 2; //残り3個を調査 repl(i, 2, N) { if (A[i] != A[i - 1] + A[i - 2]) break; count++; } cout << count << endl; return 0; }