链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3702
题意:一个数列,第一项为1,给出其第i项的值,问是否满足斐波那契数列的性质。
思路:可以发现,如果存在这样一个新数列,那么这个数列和原斐波那契数列对应的差值是原数列的倍数。
#include<cstdio> #define LL long long int main() { LL f[25]; f[0]=f[1]=1; for(int k=2;k<=20;k++) f[k]=f[k-1]+f[k-2]; int t,i,gi,j; scanf("%d",&t); while(t--) { scanf("%d%d%d",&i,&gi,&j); LL diff=gi-f[i]; if(diff<0 || diff%f[i-1]!=0) printf("-1\n"); else { LL gj=f[j]+f[j-1]*diff/f[i-1]; printf("%lld\n",gj); } } return 0; }