zoukankan      html  css  js  c++  java
  • 51nod 1010 只包含因子2 3 5的数(打表+排序+二分)

    基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题
    收藏
    关注
    取消关注
    K的因子中只包含2 3 5。满足条件的前10个数是:2,3,4,5,6,8,9,10,12,15。
    所有这样的K组成了一个序列S,现在给出一个数n,求S中 >= 给定数的最小的数。
    例如:n = 13,S中 >= 13的最小的数是15,所以输出15。
    Input
    第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000)
    第2 - T + 1行:每行1个数N(1 <= N <= 10^18)
    Output
    共T行,每行1个数,输出>= n的最小的只包含因子2 3 5的数。
    Input示例
    5
    1
    8
    13
    35
    77
    Output示例
    2
    8
    15
    36
    80

     1 #include <iostream>
     2 #include <algorithm>
     3 using namespace std;
     4 typedef long long ll;
     5 const ll N=1e18+1000;
     6 const ll maxn=1e6+10;
     7 int T;
     8 ll a[maxn];
     9 int d;
    10 void init()
    11 {
    12     d=0;
    13     for(ll i=1;i<N;i*=2)
    14         for(ll j=1;j*i<N;j*=3)
    15         for(ll k=1;i*j*k<N;k*=5)
    16         a[d++]=i*j*k;
    17     a[0]=-1;
    18     sort(a,a+d);
    19 }
    20 int main()
    21 {
    22     ios::sync_with_stdio(false);
    23     init();
    24     cin>>T;
    25     while(T--)
    26     {
    27         ll tmp;
    28         cin>>tmp;
    29         ll pos=lower_bound(a,a+d,tmp)-a;
    30         cout<<a[pos]<<endl;
    31     }
    32     return 0;
    33 }
    View Code
     
  • 相关阅读:
    lottie 动画
    .netcore 跨域问题
    数据库规范
    课程总结
    Beta版本发布
    个人作业-Alpha项目测试
    第三次作业结对编程
    第二次作业-熟悉使用工具
    第一次阅读作业
    个人作业-Alpha项目测试
  • 原文地址:https://www.cnblogs.com/onlyli/p/7259303.html
Copyright © 2011-2022 走看看