HDU 5167 Fibonacci
来源:互联网 发布:搜索引擎优化建议 编辑:程序博客网 时间:2024/05/20 19:46
题目要求的是判断一个数是不是Fibonacci数的乘积,前面想当然以为只要是两个数的乘积就行,但显然两个以上的Fibnoacci数的乘积也是可以的。
找到错误之后就用DFS搜索一遍就OK了,但姿势不好的话,就会超时。
姿势不好的dfs
int dfs(long long n){ if(n==1) return 1; for(int i=0;i<cnt;i++){ if(n%fac[i]==0&&dfs(n/fac[i])) return 1; } return 0;}正解
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;long long Fb[2000]={0,1};long long fac[100]={0};int cnt=0;int dfs(long long n,int now){ if(n==1) return 1; for(int i=now;i<cnt;i++){ if(n%fac[i]==0&&dfs(n/fac[i],i)) return 1; } return 0;}int main(){ for(int i=2;i<46;i++){ Fb[i]=Fb[i-1]+Fb[i-2]; } int t; cin>>t; while(t--){ long long num; int flag=0; scanf("%I64d",&num); if(num==0){ printf("Yes\n"); continue; } else{ cnt=0; int flag=0; for(int i=3;Fb[i]<=num;i++){ if(num%Fb[i]==0){ fac[cnt++]=Fb[i]; } } flag=dfs(num,0); if(flag) printf("Yes\n"); else printf("No\n"); } } return 0;}
0 0
- hdu-5167 Fibonacci
- hdu 5167 Fibonacci
- HDU 5167 Fibonacci
- 【预处理】 HDU 5167 Fibonacci
- HDU 5167 Fibonacci
- hdu 5167-Fibonacci
- HDU 5167Fibonacci
- 【DFS】hdu 5167 Fibonacci
- hdu 5167 Fibonacci(DFS)
- hdu 5167 Fibonacci(dfs)
- hdu 5167 Fibonacci(dfs)
- hdu 5167 Fibonacci【思维】【递归】
- HDU-Fibonacci
- hdu Fibonacci
- Fibonacci HDU
- HDU Fibonacci
- HDU 5167 Fibonacci (DFS + Fib数列)
- HDU - 5166 - Missing number && 5167 - Fibonacci
- JDBC连接Sql Server 2005
- 解决子容器全部浮动时父容器高度不能自动撑开的方法
- 数据挖掘总结之书籍篇
- BitTorrent DHT 协议中文翻译
- Java学习之Iterator(迭代器)的一般用法 (转)
- HDU 5167 Fibonacci
- SQL SERVER 2000 取第几行到第几行的方法
- CCNet 学习 第二天 Project Configuration
- 双线性插值的图像缩放算法的研究与实现
- Android Volley完全解析(一),初识Volley的基本用法
- C#条件编译选项:Conditional(代替#if...#endif)
- mongodb账号设置
- 树莓派-自动断网重连
- 思维影响人生