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的数。
Sample Input
5
1
8
13
35
77
Sample Output
2
8
15
36
80
刚开始想打表但是不知道数组应该多大
后来暴力这题自己wa了一下午
然后搜了博客是打表,那个i=i*2等我觉得这个技巧还是有的这样子保证不会重复
需要注意的是第一个是一,这个需要注意下  其他还有一个就是我用maxn=1e18+10
wa了好几次  后来改成加1000就过了这边的原因是因为当然如果是1e18肯定就wa自己没有好好考虑
顺便学了STL的lower_bound和upper_bound(本质是二分把)
代码1:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
const ll maxn=1e18+1000;
ll digit[100000],n;
int ans=0;
void init()
{ll i, j, k;for(i=1;i<maxn;i=i*2){for(j=1;j*i<maxn;j=j*3){for(k=1;i*j*k<maxn;k=k*5)digit[ans++]=i*j*k;//忽略了一个问题digit[0]是1啊 }}
}
int find()
{int left=1,right=ans;while(left<right){int mid=(left+right)/2;if(digit[mid]<n)left=mid+1;else if(digit[mid]>=n)right=mid;}return right;
}int main()
{init();sort(digit,digit+ans);ll t;cin>>t;while(t--){cin>>n;printf("%lld\n",digit[find()]);}return 0;
} 

如果用lower_bound(digit+1,digit+ans,n);

只包含因子2 3 5的数 (思维和二分)相关推荐

  1. 只包含因子2 3 5的数(51nod 思维 打表)

    K的因子中只包含2 3 5.满足条件的前10个数是:2,3,4,5,6,8,9,10,12,15. 所有这样的K组成了一个序列S,现在给出一个数n,求S中 >= 给定数的最小的数. 例如:n = ...

  2. 【51Nod - 1010 】只包含因子2 3 5的数 (打表,有坑越界)

    题干: K的因子中只包含2 3 5.满足条件的前10个数是:2,3,4,5,6,8,9,10,12,15. 所有这样的K组成了一个序列S,现在给出一个数n,求S中 >= 给定数的最小的数. 例如 ...

  3. 只包含因子 2 3 5 的数(51Nod-1010)

    题目 K的因子中只包含2 3 5.满足条件的前10个数是:2,3,4,5,6,8,9,10,12,15. 所有这样的K组成了一个序列S,现在给出一个数n,求S中 >= 给定数的最小的数. 例如: ...

  4. 51Nod-1010 只包含因子2 3 5的数【打表+排序+二分搜索】

    1010 只包含因子2 3 5的数 基准时间限制:1秒 空间限制:131072KB 分值:10难度:2级算法题 收藏 关注 K的因子中只包含2 3 5.满足条件的前10个数是:2,3,4,5,6,8, ...

  5. 剑指offer:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

    问题:把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 通俗易懂的 ...

  6. 蓝桥杯真题 18省Ca4-第几个幸运数 问题描述 到x星球旅行的游客都被发给一个整数,作为游客编号。 x星的国王有个怪癖,他只喜欢数字3,5和7。 国王规定,游客的编号如果只含有因子:3,5,

    问题描述 到x星球旅行的游客都被发给一个整数,作为游客编号. x星的国王有个怪癖,他只喜欢数字3,5和7. 国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品. 我们来看前10个幸运数 ...

  7. C语言试题五十七之假定输入的字符串中只包含字母和*号。请编写函数function,它的功能是:删除字符串中所有*号。在编写函数时,不得使用c语言提供的字符串函数。

    1. 题目 假定输入的字符串中只包含字母和*号.请编写函数function,它的功能是:删除字符串中所有*号.在编写函数时,不得使用c语言提供的字符串函数. 2 .温馨提示 C语言试题汇总里可用于计算 ...

  8. C语言试题四十二之假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。

    1. 题目 请编写一个函数function,它的功能是:假定输入的字符串中只包含字母和*号,它的功能是:将字符串中的前导*号全部移到字符串的尾部. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语 ...

  9. 找出只包含1的最大矩形c语言,一些简单的编程练习题

    转载自 http://blog.jobbole.com/53039/ 每当成为入门CS课程(学生们学习编程语言的课程)的助教时,都困于提出好的练习题.Project Euler和类似的问题通常对初学者 ...

  10. 连续字母长度 给定一个字符串 只包含大写字母

    注意!答案仅作为参考(实际考试中下列代码通过用例100%,但不代表最优解) 给定一个字符串 只包含大写字母 求在包含同一字母的子串中 长度第K长的子串 相同字母只取最长的子串 输入第一行 一个子串 1 ...

最新文章

  1. php后台如何连接网口打印机_如何设置斑马网络打印机的网卡IP地址
  2. 深入V8引擎-AST(2)
  3. android 渲染流程
  4. vim 命令_Vim 操作命令手册
  5. LeetCode--81. 搜索旋转排序数组Ⅱ(遍历法,二分法)
  6. GTK+图形化应用程序开发学习笔记(四)—容器、构件
  7. 调用webservice超时问题的解决(转载)
  8. 单网卡同时上内外网_Win10双网卡上网冲突(内网、外网)
  9. 大家来找茬源码(微擎) -- 流量主
  10. kru生成树变种 poj3522 bzoj 1196
  11. linux mint 下载迅雷安装包,Linux Mint如何安装“微信、QQ、迅雷、WPS办公软件”等国内上瘾软件...
  12. 端到端测试(e2e测试)
  13. 【其他】【RQNOJ】同分异构体
  14. 利用定时器实现PWM波对Zigbee(CC2530)上LED亮度进行强弱调整
  15. 为什么我学51单片机很顺利,学STM32却一头雾水?
  16. 【OpenGL 学习笔记03】点画多边形
  17. 2022第一位华为“天才少年”!绩点1.8逆袭!
  18. 破解XXX游戏驱动保护过程总结
  19. 工作室软路由该用哪个系统?
  20. 吃一堑长一智!java环境变量配置失败了怎么办

热门文章

  1. 原生 JS 撸一个轮播图(支持拖拽切屏)
  2. 学习笔记——正则匹配方法整理
  3. 安装mysql8.0.11
  4. 23.3. DELETE
  5. 智能美观网速快 有这样的无线路由吗?
  6. Spark 概念学习系列之从spark架构中透视job(十六)
  7. javascript DOM操作
  8. Linux终端的总结和shell
  9. 2440开发板linux系统移植3G拨号上网收发短信(三)
  10. citrix4.5无法进入发布程序界面The supplied credentials could not be validated