hdu 5167 Fibonacci(dfs)
来源:互联网 发布:海尔网络社区 编辑:程序博客网 时间:2024/06/06 07:36
题意:
fi[0]=0,fi[1]=1
fi[i]=fi[i-1]+fi[i-2] i>1
给出一个数n,问这个数能不能有fi[]相乘得来。
限制:
0 <= n <= 1e9
思路:
直接枚举会超时,所以需要剪枝。
一个数的因子只可能比这个树小,所以需要在dfs的过程中不断缩小fi的查找区间,即查找小于等于当前这个数能被整除的区间。
#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <cstdlib>#include <queue>using namespace std;typedef long long ll;ll f[50];inline void init() { f[0] = 0; f[1] = 1; for(int i = 2; i <= 45; i++) { f[i] = f[i-1] + f[i-2]; }}bool dfs(ll n, int x) { if(n <= 3) { return true; } for(int i = 3; i <= x; i++) { if(n % f[i] == 0) { if(dfs(n / f[i], i)) { return true; } } } return false;}int main() { init(); int T; ll n; scanf("%d",&T); while(T--) { scanf("%lld",&n); if(dfs(n, 45)) { printf("Yes\n"); }else { printf("No\n"); } } return 0;}
0 0
- hdu 5167 Fibonacci(DFS)
- hdu 5167 Fibonacci(dfs)
- hdu 5167 Fibonacci(dfs)
- 【DFS】hdu 5167 Fibonacci
- HDU 5167 Fibonacci(DFS暴力搜索)
- hdu 5167 Fibonacci(DFS,剪枝,斐波那契)
- HDU 5167 Fibonacci (DFS + Fib数列)
- HDU5167:Fibonacci(dfs)
- hdu-5167 Fibonacci
- hdu 5167 Fibonacci
- HDU 5167 Fibonacci
- 【预处理】 HDU 5167 Fibonacci
- HDU 5167 Fibonacci
- hdu 5167-Fibonacci
- HDU 5167Fibonacci
- HDU 5167 (dfs || STL)
- hdu 5167 Fibonacci【思维】【递归】
- hdu 1708 (字符串,Fibonacci )
- c/c++ 链接mysql数据库 (windiow)
- ubuntu和win7双系统时间错误
- windows平台好用的软件
- crtmpserver的安装
- ANSI, UTF-8, Unicode, GBK, GB2312 字符编码小结
- hdu 5167 Fibonacci(dfs)
- Linux 网络编程之ioctl函数
- URL传参乱码解决办法
- 微软CRM2013版本将整合Yammer及Skype
- sqoop使用中文手册
- SQLite3系统学习【1】简介
- UVa #1615 Highway (习题8-11)
- POJ3723
- 未将对象引用设置到对象的实例。未处理NullReferenceException