FIBVAL - VOI 2012 Bản vanxơ Fibonacci
Tác giả: flashmt
Ngôn ngữ: C++
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int f[20]={0,1,2};
int cyclic(int u,int v)
{
int l=v-u+1;
for (int x=1;x<=l/2;x++)
if (l%x==0)
{
int ok=1;
for (int i=u+x;i<=v;i++)
if (f[i%16]!=f[(i-x)%16])
{
ok=0; break;
}
if (ok) return 1;
}
return 0;
}
int calc(int u,int v)
{
int res=-1;
if (v-u+1<=100)
{
for (int i=u;i<v;i++)
for (int j=i+1;j<=v;j++)
if (cyclic(i,j))
res=max(res,j-i+1);
}
else res=(v-u+1)/16*16;
return res;
}
int main()
{
int test,u,v;
for (int i=3;i<=16;i++) f[i%16]=(f[i-1]+f[i-2])%7;
cin >> test;
while (test--) cin >> u >> v, cout << calc(u,v) << endl;
}