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的数。
 
代码1:3个for
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
map<LL, bool>M;
LL a[];
int main()
{
int t, l = ;
LL s = ;
for(LL i = ; i <= 1e18; i = i*)
for(LL j = ; j*i <= 1e18; j = j*)
for(LL k = ; i*j*k <= 1e18; k = k*)
{
if(!M[i*j*k] && i*j*k != )
{
M[i*j*k] = ;
a[l++] = i*j*k;
}
}
sort(a, a+l);
cin>>t;
LL n;
while(t--)
{
scanf("%lld", &n);
int pos = lower_bound(a, a+l, n) - a;
printf("%lld\n", a[pos]);
}
return ;
}

代码2:bfs

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=; LL a[N] , b[N*];
queue<LL> q;
map<LL , bool> m;
int main()
{
LL n = 1e18;
q.push();
m[]= ; int k = ;
while (!q.empty())
{
LL x = q.front();
a[k ++] = x;
q.pop();
if (x*<=n && !m[x*]) q.push(x*) , m[x*] = ;
if (x*<=n && !m[x*]) q.push(x*) , m[x*] = ;
if (x*<=n && !m[x*]) q.push(x*) , m[x*] = ;
}
sort(a, a+k);
int cas;
scanf("%d", &cas);
while (cas -- )
{
LL y;
scanf("%lld", &y);
int id = lower_bound(a, a+k, y) - a;
printf("%lld\n", a[id]);
}
return ;
}

【51nod-1010】因子只含有2 3 5的数的更多相关文章

  1. 51Nod 1010 只包含因子2 3 5的数 | 预处理+二分

    Input示例 5 1 8 13 35 77 Output示例 2 8 15 36 80 分析:将所有的只含有2 3 5因子的数打一个表保存在一个数组里,然后二分查找第一个>=数组里的数,输出 ...

  2. 51nod 1010 只包含因子2 3 5的数 && poj - 1338 Ugly Numbers(打表)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1010 http://poj.org/problem?id=1338 首先 ...

  3. 35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n

      35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现in ...

  4. 任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0。

    题目:任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0. 解法一:暴力求解.从1开始查找M,然后判断M*N=X这个数字是否只含有0,1. 解法二:由 ...

  5. 一个正则表达式,只含有汉字、数字、字母、下划线,下划线位置不限【Z】

    1.一个正则表达式,只含有汉字.数字.字母.下划线不能以下划线开头和结尾: ^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$ 其中: ^ 与字符串开始的地方匹配 ( ...

  6. 【USACO 3.1】Humble Numbers(给定质因子组成的第n大的数)

    题意:给你k(≤100)个质数,求质因子只包含它们的第n大的数. 题解: 方法一:维护一个数组,一开始只有给出的质数在里面,用每个质数去乘以数组中每个数,然后归并排序,长度保留到n,一轮接一轮,直到乘 ...

  7. 51nod 1010 只包含因子2 3 5的数 打表

    只包含因子2 3 5的数 题目连接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1010 Description K的 ...

  8. 51nod 1010 只包含因子2 3 5的数 二分答案

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

  9. 51Nod 1010 只包含因子2 3 5的数 Label:None

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

随机推荐

  1. selenium+python学习总结

    学习了一个月的selenium+python,终于学有所成,下面以一个简单的项目来总结学习所得. 1.         项目结构 在项目结构中,大家要注意到:每一个源文件夹中都要有一个__init__ ...

  2. python os模块一些常用操作

    os.getcwd() ## 获取当前路径 os.chdir("dirpath") ## 改变目录 os.makedirs("dirname") ## 递归创建 ...

  3. 浅谈boost.variant的几种访问方式

    前言 variant类型在C++14并没有加入,在cppreference网站上可以看到该类型将会在C++17加入,若想在不支持C++17的编译器上使用variant类型,我们可以通过boost的va ...

  4. mysql服务解压版的安装(5.7)

    推荐博客: https://www.cnblogs.com/LxyXY/p/7708016.html

  5. 【Python】IO编程

    文件读写 StringIO和BytesIO 操作文件和目录 序列化 学习廖老师的py官网的笔记 1.stream的概念.数据交换通常需要建立两根“水管”. 2.同步IO和异步IO.异步性能高,但是编程 ...

  6. 20145307第五次JAVA学习实验报告

    20145307<Java程序设计>第五次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 实验名 ...

  7. 20144303 《Java程序设计》第二次实验实验报告

    20144303 <Java程序设计>第二次实验实验报告 北京电子科技学院(besti)实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握U ...

  8. 钓鱼WIFI搭建

      1.无线网卡 2.KaliLinux操作系统,这里就不用说了,必备的 3.isc-dhcp-server服务器.安装好KaliLinux后只需要apt-get update 然后apt-get i ...

  9. java开发中的诡异事件

    1.Excel中的诡异'\r' 2.springMVC中参数莫名的不匹配 今天在使用springmvc测试一个controller方法一直访问失败,400错误,百思不得其解 先是问同事,然后一起讨论了 ...

  10. python中的参数传递

    一般的参数顺序是先位置,再关键字,然后是包裹位置传递,包裹关键字传递.