FIBVAL - VOI 2012 Bản vanxơ Fibonacci

Tác giả: ladpro98

Ngôn ngữ: C++

#include <cstring>
#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <climits>
#include <cstdlib>
#include <ctime>
#include <memory.h>
#include <cassert>
#include <climits>
#define FOR(i, a, b) for(int i = (a); i < (b); i++)
#define REP(i, a, b) for(int i = (a); i <=(b); i++)
#define FORD(i, a, b) for(int i = (a); i > (b); i--)
#define REPD(i, a, b) for(int i = (a); i >=(b); i--)
#define TR(it, a) for(typeof((a).begin()) it = (a).begin(); it != (a).end(); it++)
#define RESET(a, v) memset((a), (v), sizeof((a)))
#define SZ(a) (int((a).size()))
#define ALL(a) (a).begin(), (a).end()
#define PB push_back
#define MP make_pair
#define LL long long
#define LD long double
#define II pair<int, int>
#define X first
#define Y second
#define VI vector<int>

using namespace std;
int f[111];
int k;
LL u, v;

int main() {
    ios :: sync_with_stdio(0); cin.tie(0);
    f[0] = 1; f[1] = 2;
    FOR(i, 2, 100) f[i] = (f[i - 1] + f[i - 2]) % 7;
    cin >> k;
    while (k--) {
        cin >> u >> v;
        u--; v--;
        LL len = v - u + 1, ans = -1;
        if (len >= 32) ans = len / 16 * 16;
        else {
            u %= 32;
            FOR(i, u, u + len - 1)
            if (f[i] == f[i + 1]) ans = 2;
        }
        cout << ans << '\n';
    }
    return 0;
}

Download