1010 只包含因子2 3 5 的数

题目链接:

http://www.51nod.com/Challenge/Problem.html#!#problemId=1010

引用知识:

https://baike.baidu.com/item/%E4%B8%91%E6%95%B0/18046116?fr=aladdin

丑数

丑数描述

编辑

把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但7、14不是,因为它们包含质因子7。 习惯上我们把1当做是第一个丑数。

前20个丑数为:1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30, 32, 36。

判断方法

编辑

首先除2,直到不能整除为止,然后除5到不能整除为止,然后除3直到不能整除为止。最终判断剩余的数字是否为1,如果是1则为丑数,否则不是丑数。

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。

输入

第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000)
第2 - T + 1行:每行1个数N(1 <= N <= 10^18)

输出

共T行,每行1个数,输出>= n的最小的只包含因子2 3 5的数。

输入样例

5
1
8
13
35
77

输出样例

2
8
15
36
80

解题思路:丑数打表+二分查找。如果去枚举的话,抱歉time limittted!!!

下面是我的代码

#include "bits/stdc++.h"
using namespace std;
#define LL long long
LL a[100000];
LL ugly(LL n)
{while(n>=2&&n%2==0){n/=2;}while(n>=5&&n%5==0){n/=5;}while(n>=3&&n%3==0){n/=3;}if(n==1) return 1;else return 0;
}
LL min1(LL a,LL b,LL c)
{LL c1=min(a,b);LL d=min(c1,c);return d;
}
int bsearch(LL a[], int n,LL key){int low = 0;int high = n;int mid = 0;while(low <= high) {mid = low + ((high-low) >> 1);if(key <= a[mid]) {high = mid - 1;} else {low = mid + 1;}}return low <= n ? low : -1;
}
int main(int argc, char const *argv[]) {int t;int n=1;cin>>t;a[1]=1;int p2,p3,p4;p2=p3=p4=1;while(n<11000){a[++n]=min1(2*a[p2],3*a[p3],5*a[p4]);if(a[n]==2*a[p2]) p2++;if(a[n]==3*a[p3]) p3++;if(a[n]==5*a[p4]) p4++;}// cout<<a[11000]<<endl;// for(int i=1;i<10;i++)// cout<<a[i]<<" "<<endl;for(int i=0;i<t;i++){LL n2;cin>>n2;// cout<<n2<<endl;if(n2==1) printf("2\n");else{int x=bsearch(a,n,n2);// cout<<x<<endl;cout<<a[x]<<endl;}}return 0;
}

丑数 打表+二分查找相关推荐

  1. ssl1125-集合【哈希表二分查找+快排】

    前言 今天学哈希表,然后就第一节晚修赶快写完作业就上了做题了,然后就做完了这道题get√. 正题 题目 给出两个集合: A是B的一个真子集,输出"A is a proper subset o ...

  2. LeetCode 1099. 小于 K 的两数之和(二分查找)

    文章目录 1. 题目 2. 解题 2.1 暴力 2.2 二分查找 1. 题目 给你一个整数数组 A 和一个整数 K,请在该数组中找出两个元素,使它们的和小于 K 但尽可能地接近 K,返回这两个元素的和 ...

  3. Python数据结构——对有序表二分查找

    list= [1, 5, 6, 9, 10, 51, 62, 65, 70] 查找5时: [1, 5, 6, 9, 10, 51, 62, 65, 70]        low=0    high=9 ...

  4. B-幸运数字II (打表+二分查找)

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 定义一个数字为幸运数字当且仅当它的所有数位 ...

  5. C/C++语言100题练习计划 88——猜数游戏(二分查找实现)

    名人说:故立志者,为学之心也:为学者,立志之事也.-- 王阳明 进度:C/C++语言100题练习计划专栏,目前88/100

  6. 数据结构与算法--丑数

    找出排在第n位大的丑数 丑数:我们将只包含质因子 2,3,5的数称为丑数(ugly Number).求按从小到大的熟悉怒排列的低1500 个丑数.例如6,8 都是丑数,但是14 不是丑数,因为他包含质 ...

  7. 二分查找(折半查找)总结

    ** 二分查找(折半查找)总结 ** 文章目录 二分查找(折半查找)总结 一.基本概念 二.编写代码 1.二分查找 2.测试代码 三.输出结果 四.总结评价 一.基本概念 二分查找也叫折半查找,是一种 ...

  8. 二分查找和二分答案(洛谷)

    细节好可怕~ 二分查找算法的细节剖析_JackComeOn的博客-CSDN博客原文:https://www.cnblogs.com/kyoner/p/11080078.html我周围的人几乎都认为二分 ...

  9. LeetCode 668. 乘法表中第k小的数(二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 几乎每一个人都用 乘法表.但是你能在乘法表中快速找到第k小的数字吗? 给定高度m .宽度n 的一张 m * n的乘法表,以及正整数k,你需要返回表中第k ...

  10. 三个数互质 java_LeetCode 5198. 丑数 III(Java)容斥原理和二分查找

    请你帮忙设计一个程序,用来找出第 n 个丑数. 丑数是可以被 a 或 b 或 c 整除的 正整数. 示例 1: 输入:n = 3, a = 2, b = 3, c = 5 输出:4 解释:丑数序列为 ...

最新文章

  1. 测序数据质量统计软件fastqc,multiqc
  2. 我是怎么使用最短路径算法解决动态联动问题的
  3. matlab同窗口显示图片,[求助]关于GUI的问题,如何在同一窗口里显示四副图片...........
  4. Android 相机,视频录制
  5. Java设计模式百例(番外) - Java的clone
  6. python递归汉诺塔详解_汉诺塔在python中递归,理解磁盘目的地的变化
  7. chmod与umask区分命令
  8. go语言sync包的Map源码
  9. 静态注册fragment_Fragment的静态和动态添加方式以及Fragment和Activity之间的通信方式...
  10. VMware Workstation 12 Player之安装林耐斯-Linux Red Hat 7 -系统
  11. Android 透明颜色值ARGB
  12. postman 使用
  13. Unable to resolve dependency for ':app@debug/compileClasspath'
  14. Xcode 9: An error occurred uploading to the iTunes Store. iTunes Store Operation Failed
  15. 上下文切换调优-性能设计沉思录(9)
  16. 批量将所有文件按照文件名中的扩展名后缀进行分类整理
  17. 由验证控件引起的IE的超级爆笑BUG
  18. Cadence16.6 > OrCAD Capture CIS >原理图统一改器件属性
  19. 手游开发攻防——二、基础篇(更新完)
  20. 微信小程序|icon列表跳转不同界面

热门文章

  1. html5 摇骰子游戏,HTML5+JavaScript实现掷骰子游戏代码
  2. 朝花夕拾-不务正业的大学生做了什么比赛?
  3. SCRUM敏捷开发教程
  4. java 多线程 原子_Java多线程:原子量
  5. Jackson 学习笔记 XML转JSON
  6. 机器学习必须要会的:方差、标准差、相对标准偏差、正态分布的概念
  7. malloc函数C语言实现
  8. 14、CSS渲染:CSS是如何绘制颜色的?
  9. 音乐服务器 linux,Linux 下五个很酷的音乐播放器
  10. EPLAN教程——端子图表端子数量超出图框了怎么办