题意:任意给你三个数,让你判断第三个数是否在以前两个数为开头组成的Fibonacci 数列中。
解题思路:此题我觉得是一个坑,题目本来给的就很简单,但是当时却不敢掉以轻心,以为不可能那么简单,觉得10^9暴力肯定超时,TM结果出来看了别人的解题过程,真TM是简单粗暴型的,真是恶心死了。看来下次真的没思路的话,就简单粗暴一点儿的好,万一过了呢!哈哈。。。。
代码:
#include <iostream>
#include <cstdio>
using namespace std;
long long a,b,c;
void solve()
{
if(c == a || c == b) printf("Yes\n");
else
{
long long ans;
for(ans = a+b; ans < c; )
{
ans += b; b = ans - b;
}
if(ans == c) printf("%Yes\n");
else printf("No\n");
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%I64d%I64d%I64d",&a,&b,&c);
solve();
}
return 0;
}