巧克力(chocolate)
【题目描述】
有n个盒子从左往右排成一行,编号是1至n。第1个盒子的巧克力数量是1,第2个盒子的巧克力数量也是1,对于i >=3都满足:
f[i] = f[i-1] + f[i-2],即第i个盒子的巧克力数量等于其前面两个盒子的巧克力数量之和。容易看出,这n个盒子的巧克力数量其实是斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, ...... 现在要把这n个盒子分成两堆,使得每堆的巧克力数量相等,可以做到吗?如果可以输出”YES”,否则输出”NO”。
注意:一个盒子要么在一堆,要么在另一堆,不能拆开盒子。
【输入格式】
第一行,一个正整数R,表示有R组测试数据。1<=R<=3。
接下来有R行,每行一个整数n。1<=n<=1000。
【输出格式】
共R行,每行一个字符串,”YES”或者”NO”, 双引号不用输出。
【输入样例】 | 【输出样例】 |
3 5 3 1 | YES YES NO |
【提示】
有80%的数据,1<=n<=40。
答案:
#include<bits/stdc++.h>
using namespace std;
int r,f;
int main()
{
cin>>r;
for(int i=1;i<=r;i++)
{
cin>>f;
if(f%3==0||f%3==2)cout<<"YES\n";
else cout<<"NO\n";
}
return 0;
}