hdu 5167
来源:互联网 发布:快手淘宝优惠卷骗局 编辑:程序博客网 时间:2024/06/08 09:31
题意: 给出一个整数n(0<=n<=1e9),问该整数能否由fib数列的乘积得出
注意:可以是多项相乘;
分析:如果是乘积规定是两项,那就简单了,直接O(n*n)的预处理,然后O(1)的查询即可。
但现在是多项相乘,其实也一样用队列预处理即可,O(1)查询
#include <iostream>#include <stdio.h>#include <string>#include <string.h>#include <algorithm>#include <queue>#include <map>using namespace std;typedef long long ll;ll fib[55];map<ll,int>mp;void init(){ mp.clear(); queue<ll>que; fib[0]=0,fib[1]=1,fib[2]=1; mp[0]=1,mp[1]=1; for(int i=3;i<=45;i++) { fib[i]=fib[i-1]+fib[i-2]; mp[fib[i]]=1; que.push(fib[i]); } ll tmp,tp; while(!que.empty()) { tmp=que.front(); que.pop(); for(int i=3;i<=45;i++) { tp=tmp*fib[i]; if(tp>1000000000)break; if(mp[tp])continue; mp[tp]=1; que.push(tp); } }}int main(){ int T; scanf("%d",&T); init(); while(T--) { ll n; scanf("%I64d",&n); //cout<<fib[45]<<endl; if(mp[n])printf("Yes\n"); else printf("No\n"); } return 0;}
还可以通过dfs来做,但是很容易超时。
0 0
- hdu 5167
- hdu 5167 暴力
- 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
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- Linux-->问题解决-->/dev/mapper/VolGroup-lv_root:
- 探讨—设备商应当如何使用开源代码
- 浅析busybox查找命令和调用相应命令函数的实现流程框架
- http请求封装
- 线段树
- hdu 5167
- 翻译经典之《Cisco Lan Switching》第六章 理解生成树(一): 本章内容
- 《人人都是产品经理》读后感二
- Android WebView加载服务端页面AJAX认证失败问题
- Apache2.4+ PHP5.6 搭建PHP开发环境笔记
- Android之Handler更新UI总结
- 工厂设计模式
- HDOJ 1372 Knight Moves【BFS】
- 各种动态网页技术的特点与区别