当前位置: 首页 > news >正文

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中 >= 给定数的最小的数。
例如: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
这道题并不算什么难题吧,但是可以熟悉下二分的各种奇淫做法,stl里面有三种二分还是很强大的

函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置

举例如下:

一个数组number序列为:4,10,11,30,69,70,96,100.设要插入数字3,9,111.pos为要插入的位置的下标

pos = lower_bound( number, number + 8, 3) - number,pos = 0.即number数组的下标为0的位置。

pos = lower_bound( number, number + 8, 9) - number, pos = 1,即number数组的下标为1的位置(即10所在的位置)。

pos = lower_bound( number, number + 8, 111) - number, pos = 8,即number数组的下标为8的位置(但下标上限为7,所以返回最后一个元素的下一个元素)。

所以,要记住:函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置,且last的位置是越界的!!~

返回查找元素的第一个可安插位置,也就是“元素值>=查找值”的第一个元素的位置 by飘过的小

10^18这个数据量还是很大的,不过2^10都1024了,所以对这些数枚举并不会有什么错错,但是关键是要对这些数字进行查找,就是找这些数第一个大于n的就可以了,这就是大致思路

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL INF = 1e18+1000;
const int MAXN = 1e6;
LL a[MAXN];
int cnt;
void Init()
{
    cnt = 0;
    for(LL i=1; i<INF; i*=2)
        for(LL j=1; j*i<INF; j*=3)
            for(LL k=1; i*j*k<INF; k*=5)
                    a[cnt++] = i*j*k;
}
int main()
{
    Init();
    sort(a,a+cnt);
    int t;
    cin>>t;
    while(t--)
    {
        LL n;
        scanf("%lld",&n);
        printf("%lld\n",a[lower_bound(a+1,a+cnt+1,n)-a]);
    }
    return 0;
}

 

 

 
 

转载于:https://www.cnblogs.com/BobHuang/p/6942258.html

相关文章:

  • iOS10App如何跳转到系统设置转
  • IPv4检验和计算
  • vue总结
  • java虚拟机:class文件结构
  • tomcat7线程池配置
  • JS中typeof和instanceof用法区别
  • JS中闭包、函数与对象的介绍和用法
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • 从零开始学习Vue(一)
  • 从零开始学习Vue(三)
  • jmeter使用BeanShell断言
  • 裁掉你的前端吧,切版网帮你解决
  • 简介Doxygen
  • 2048-控制台版本
  • 第一章 深入理解Magento - Magento强大的配置系统
  • 2017-08-04 前端日报
  • IDEA 插件开发入门教程
  • js ES6 求数组的交集,并集,还有差集
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • spring boot下thymeleaf全局静态变量配置
  • Swoft 源码剖析 - 代码自动更新机制
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • vagrant 添加本地 box 安装 laravel homestead
  • 阿里云前端周刊 - 第 26 期
  • 跨域
  • 如何实现 font-size 的响应式
  • 微信小程序实战练习(仿五洲到家微信版)
  • 译米田引理
  • 原生 js 实现移动端 Touch 滑动反弹
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 我们雇佣了一只大猴子...
  • #162 (Div. 2)
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (3)选择元素——(17)练习(Exercises)
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (小白学Java)Java简介和基本配置
  • (转)原始图像数据和PDF中的图像数据
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • (转载)CentOS查看系统信息|CentOS查看命令
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET 解决重复提交问题
  • .net6使用Sejil可视化日志
  • .NET成年了,然后呢?
  • .NET中 MVC 工厂模式浅析
  • @Autowired 与@Resource的区别
  • @RequestMapping用法详解
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [BZOJ1008][HNOI2008]越狱
  • [C++]STL之map
  • [CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大
  • [cogs2652]秘术「天文密葬法」