博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ-3713[PA2014]Iloczyn
阅读量:6190 次
发布时间:2019-06-21

本文共 1179 字,大约阅读时间需要 3 分钟。

Description

斐波那契数列的定义为:k=0或1时,F[k]=k;k>1时,F[k]=F[k-1]+F[k-2]。数列的开头几项为0,1,1,2,3,5,8,13,21,34,55,…你的任务是判断给定的数字能否被表示成两个斐波那契数的乘积。

Input

第一行包含一个整数t(1<=t<=10),表示询问数量。接下来t行,每行一个整数n_i(0<=n_i<=10^9)。

Output

输出共t行,第i行为TAK(是)或NIE(否),表示n_i能否被表示成两个斐波那契数的乘积。

Sample Input

5
5
4
12
11
10

Sample Output

TAK
TAK
NIE
NIE
TAK

HINT

 

Source

 

题解

这道题直接把1e9内的所有斐波那契数都推出来

每次读入的时候枚举斐波那契数,判断一下这个数是否能被整除,并且整除后的数是否在斐波那契数列中

1 #include
2 using namespace std; 3 int T,n,num; 4 int fib[50]; 5 map
flag; 6 int main(){ 7 scanf("%d",&T); 8 fib[1]=1; fib[2]=1; flag[1]=true; 9 for (int i=3;i<=45;i++) fib[i]=fib[i-1]+fib[i-2],flag[fib[i]]=true;10 while (T--){11 scanf("%d",&n);12 if (!n){13 puts("TAK");14 continue;15 }16 int t=1,d=sqrt(n);17 bool Flag=false;18 while (fib[t]<=d){19 if (!(n%fib[t])&&flag[n/fib[t]]){20 Flag=true;21 puts("TAK");22 break;23 } 24 t++;25 }26 if (!Flag) puts("NIE");27 }28 return 0;29 }
View Code

 

转载于:https://www.cnblogs.com/zhuchenrui/p/7699356.html

你可能感兴趣的文章
Kettle组件Spoon的使用
查看>>
parsley.js自定义验证规则之大小写
查看>>
有道翻译与VS2010滚动栏自动反弹冲突问题
查看>>
GetLogicalDrives,GetLogicalDriveStrings,GetDri...
查看>>
spring多数据源配置,实现读写分离
查看>>
jenkins 2.19.1安装
查看>>
PMBOK--项目整合管理
查看>>
统计查询,实现将结果集竖排显示
查看>>
ARouter 源码历险记 (四)
查看>>
企业邮箱能设置个人昵称吗,如何设置?
查看>>
Privoxy | 终端运用privoxy自由选择是否代理拉取Golang包(Mac OS)
查看>>
PLIP--Linux 并口网络解决方法
查看>>
Kafka入门
查看>>
docker开启otter服务mysql单双向同步数据
查看>>
任时光匆匆流走。。。。
查看>>
收藏几个漂亮的login页面验证
查看>>
Qt源码分析之概述
查看>>
activity 和service通信,调用service方法
查看>>
View的事件体系
查看>>
TensorBoard 使用案例
查看>>