• hdu 5167 bfs


    因为斐波那契数列增长很快(指数级),所以10Y以内只有不到50个斐波那契数,将这些数字所有可能的乘积存起来查询即可,这里采用bfs+set的方式。

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 #include <queue>
     5 #include <set>
     6 using namespace std;
     7 
     8 typedef long long ll;
     9 const int INF = 1000000000;
    10 const int N = 44;
    11 int f[N];
    12 set<int> s;
    13 
    14 void init()
    15 {
    16     f[0] = 2;
    17     f[1] = 3;
    18     for ( int i = 2; i < N; i++ )
    19     {
    20         f[i] = f[i - 1] + f[i - 2];
    21     }
    22 }
    23 
    24 void get()
    25 {
    26     init();
    27     queue<int> q;
    28     q.push(1);
    29     s.insert(1);
    30     while ( !q.empty() )
    31     {
    32         int cur = q.front();
    33         q.pop();
    34         for ( int i = 0; i < N; i++ )
    35         {
    36             if ( ( ll ) cur * f[i] > INF ) break;
    37             if ( s.find( cur * f[i] ) == s.end() )
    38             {
    39                 q.push( cur * f[i] );
    40                 s.insert( cur * f[i] );
    41             }
    42         }
    43     }
    44     s.insert(0);
    45 }
    46 
    47 bool ok( int n )
    48 {
    49     if ( s.find(n) != s.end() ) return true;
    50     return false;
    51 }
    52 
    53 int main ()
    54 {
    55     get();
    56     int t;
    57     scanf("%d", &t);
    58     while ( t-- )
    59     {
    60         int n;
    61         scanf("%d", &n);
    62         if ( ok(n) ) puts("Yes");
    63         else puts("No");
    64     }
    65     return 0;
    66 }
  • 相关阅读:
    杭电2074
    关于大整数n!的问题!
    杭电2053
    大整数乘法(高精度)
    JS:获取框架内容
    JQ:hover延迟效果
    jQ+Ajax+PHP 简单实例
    js节省document.getElementById("xxx")的方法
    QQ一键登录功能的实现过程
    点击文字出现文本框
  • 原文地址:https://www.cnblogs.com/huoxiayu/p/4731807.html
Copyright © 2020-2023  润新知