博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 5167 Fibonacci(BestCoder Round #28)
阅读量:6480 次
发布时间:2019-06-23

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

Problem Description:

Following is the recursive definition of Fibonacci sequence:
Fi=⎧⎩⎨01Fi1+Fi2i = 0i = 1i > 1
Now we need to check whether a number can be expressed as the product of numbers in the Fibonacci sequence.
 
Input:
There is a number 
T shows there are T test cases below. (T100,000)
For each test case , the first line contains a integers n , which means the number need to be checked. 
0n1,000,000,000
 
Output:
For each case output "Yes" or "No".
 
Sample Input:
3
4
17
233
 
Sample Output:
Yes
No
Yes

题意:判断一个数n是不是Fibonacci序列中数的乘积(可以是同一个数)。

#include
#include
#include
#include
#include
#include
using namespace std;const int N=1e6+10;const int INF=0x3f3f3f3f;const int MOD=1e9;typedef long long LL;LL n, a[60];int k, flag;void Solve() ///打表,并找到满足题意的最大的Fibonacci数的下标k{ int i; a[0] = 0; a[1] = 1; for (i = 2; i <= 50; i++) { a[i] = a[i-1]+a[i-2]; if (a[i] >= MOD) { if (a[i] > MOD) i--; k = i; break; } }}void DFS(int num, LL m){ int i; if (m == 1) flag = 1; if (flag == 1) return ; if (num < 3) return ; if (m % a[num] == 0) DFS(num, m/a[num]); DFS(num-1, m);}int main (){ int T; Solve(); scanf("%d", &T); while (T--) { scanf("%lld", &n); flag = 0; if (n == 0) { printf("Yes\n"); continue; } DFS(k, n); if (flag == 1) printf("Yes\n"); else printf("No\n"); } return 0;}

转载于:https://www.cnblogs.com/syhandll/p/4977355.html

你可能感兴趣的文章
三篇文章了解 TiDB 技术内幕 —— 说计算
查看>>
copy strong weak assign的区别
查看>>
OpenCV 入门
查看>>
css 3D transform变换
查看>>
ele表格合并行之后的selection选中
查看>>
正则表达式分解剖析(一文悟透正则表达式)
查看>>
解决UILable标点符号居中的问题
查看>>
HTML5新特性教程
查看>>
ImageOptim-无损图片压缩Mac版
查看>>
12 Go语言map底层浅析
查看>>
vue-resumer 项目中 element-ui 遇到的 textarea autosize 问题
查看>>
以主干开发作为持续交付的基础
查看>>
PHP扩展库PEAR被攻击,近半年下载者或被影响
查看>>
传统运维团队转型应该注意哪些问题?
查看>>
JavaScript函数(二)
查看>>
Airbnb改进部署管道安全性,规范部署顺序
查看>>
腾讯最大规模裁撤中层干部,让贤年轻人
查看>>
当我们谈性能的时候,我们实际上在谈什么?
查看>>
蔡超:入门 Go 语言必须跨越的五个思维误区
查看>>
使用Akka Actor和Java 8构建反应式应用
查看>>