• hdu5878(枚举,打表)


    题目链接:hdu5878

    题意:到一行输入t,表示下面有t组数据,然后下面t行每行输入一个数n;

    定义x==2^a*3^b*5^c*7^d(a, b, c, d为自然数,x不大于1e+9);

    要求对于每一个n输出>=n的最小x;

    思路:由于x比较大,可以先打个表;

    依次枚举a,b,c,d将所有不大于1e+9的x存到数组a中,再用;lower_bound()找一下即可;

    代码:

     1 #include<bits/stdc++.h>
     2 #define MAXN 10000
     3 #define MAX 1000000000
     4 #define eps 1e-6
     5 #define ll long long
     6 using namespace std;
     7 
     8 ll a[MAXN];
     9 
    10 void get_number(void)  //***打表,将所有不大于1e+9的x存数组a中
    11 {
    12     ll flag;
    13     int pos=0;
    14     for(int i=0; pow(2, i)<=MAX; i++)
    15     {
    16         for(int j=0; pow(2, i)*pow(3, j)<=MAX; j++)
    17         {
    18             for(int k=0; pow(2, i)*pow(3, j)*pow(5, k)<=MAX; k++)
    19             {
    20                 for(int l=0; pow(2, i)*pow(3, j)*pow(5, k)*pow(7, l)<=MAX; l++)
    21                 {
    22                     a[pos++]=pow(2, i)*pow(3, j)*pow(5, k)*pow(7, l);
    23                 }
    24             }
    25         }
    26     }
    27 }
    28 
    29 int main(void)
    30 {
    31     std::ios::sync_with_stdio(false), cin.tie(0), cin.tie(0);
    32     ll t, n;
    33     get_number();
    34     sort(a, a+MAXN);
    35     cin >> t;
    36     while(t--)
    37     {
    38         cin >> n;
    39         int pos=lower_bound(a, a+MAXN, n)-a;   //****二分查找第一个大于等于n的数,返回指针;
    40         cout << a[pos] << endl;
    41     }
    42     return 0;
    43 }
  • 相关阅读:
    redis 哨兵集群
    图像噪声概述
    基于FPGA的图像去噪
    参考文献写法
    zynq 之u-boot
    图像去噪算法
    制作根文件系统(接上次嵌入式交叉编译环境)
    ubuntu OPENCV移植
    zedboard OPENCV移植
    zedboard 构建嵌入式linux
  • 原文地址:https://www.cnblogs.com/geloutingyu/p/5893827.html
Copyright © 2020-2023  润新知