题目大意:给出Fibonacci数列初始的值a,b,判断c是不是该Fibonacci数列中的数。
解题思路:特地在这里祭奠下犯二的自己。之前这种题,博客都说看到数据量就知矩阵快速幂,而我老是模拟被T,今天看到这个1e9的,直接就矩阵快速幂,结果不对!直接模拟暴力解之!快疯了!这个题后边好多人被Hack了,原因就在于题中说判断c是不是该序列中的数,没有说第一二个不是哦!所以要特判下,详见code
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=5018
code:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define ll long long
ll a,b,c;
int t;
int main(){
scanf("%d",&t);
while(t--){
scanf("%lld%lld%lld",&a,&b,&c);
if(c==a || c==b){printf("Yes\n");continue;}
while(1){
ll t=a+b;
if(c==t){printf("Yes\n");break;}
if(t>c){printf("No\n");break;}
a=b;b=t;
}
}
return 0;
}