题意

输入 t (1≤t≤500000), the number of test cases. t test cases follow. Each test case provides one integer n (1≤n≤109).让我们不小于n的最小的x满足 x=2^a*3^b*5^c*7^d

分析

这道题其实就是个枚举
但是不能随便枚举
比如 如果向这样枚举的话
    scanf("%lld",&n);for(ll i=n;;i++){ll tem = i;while(tem%2==0)tem/=2;while(tem%3==0)tem/=3;while(tem%5==0)tem/=5;while(tem%7==0)tem/=7;if(tem==1){printf("%lld\n",i);break;}}

那铁定是要TLE
case的数量是500000个 那平均输入数据都比较大 每个数据要差不多搜索1000个数才能找到我们所想要找的数的话 就会发现 这里500000*1000 = 500000000 关键有些数据还不会仅仅的查找1000次就找到
所以这样一定超时
我们看 既然枚举数字比较麻烦
我们如果枚举因子呢
我们已经知道 每个数的因子就是2,3,5,7
也就是说这个数一定能通过这四个数组合而成
如果我们通过枚举这四个因子的数量去做呢
比如这样

    for(int f2=0;ff2<maxn;f2++,c++){f2==0?ff2*=1:ff2*=2;for(int f3 = 0;ff2*ff3<maxn;f3++,c++){f3==0?ff3*=1:ff3*=3;for(int f5=0;ff2*ff3*ff5<maxn;f5++,c++){f5==0?ff5*=1:ff5*=5;for(int f7=0;ff2*ff3*ff5*ff7<maxn;c++,f7++){f7==0?ff7*=1:ff7*=7;fac = ff2*ff3*ff5*ff7;if(fac<maxn)s.insert(fac);else break;}ff7=1;}ff5=1;}ff3=1;}

那可是快多了
也就是8万多次循环就完成了

代码如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn = 1e9+1;
int main()
{ll fac=1,ff,c=0;set<ll>s;ll ff2=1,ff3=1,ff5=1,ff7=1;for(int f2=0;ff2<maxn;f2++,c++){f2==0?ff2*=1:ff2*=2;for(int f3 = 0;ff2*ff3<maxn;f3++,c++){f3==0?ff3*=1:ff3*=3;for(int f5=0;ff2*ff3*ff5<maxn;f5++,c++){f5==0?ff5*=1:ff5*=5;for(int f7=0;ff2*ff3*ff5*ff7<maxn;c++,f7++){f7==0?ff7*=1:ff7*=7;fac = ff2*ff3*ff5*ff7;// cout<<fac<<endl;if(fac<maxn)s.insert(fac);else break;}ff7=1;}ff5=1;}ff3=1;}//  cout<<c<<endl;  81510//  cout<<s.size()<<endl; 7千多int t;scanf("%d",&t);while(t--){ll n;scanf("%lld",&n);printf("%lld\n",*(s.lower_bound(n)));}return 0;
}

HDU - 5878 A - I Count Two Three H 技巧枚举相关推荐

  1. 【HDU - 5878】I Count Two Three(打表)

    题干: I will show you the most popular board game in the Shanghai Ingress Resistance Team. It all star ...

  2. HDU 5878 I Count Two Three

    打表,二分. 满足条件的数字个数不多,可以全部找出来,排个序,每次询问的时候二分一下. #pragma comment(linker, "/STACK:1024000000,10240000 ...

  3. AC自动机 + 概率dp + 高斯消元 --- HDU 5955 or 2016年沈阳icpc H [AC自动机 + 概率dp + 高斯消元]详解

    题目链接 题目大意: 就是有NNN个人,每个人都会猜一个长度为LLL的只包含{1,2,3,4,5,6}\{1,2,3,4,5,6\}{1,2,3,4,5,6}的序列,现在裁判开始投掷骰子,并且把每次的 ...

  4. 【HDU - 5056】Boring count (尺取法)

    题干: You are given a string S consisting of lowercase letters, and your task is counting the number o ...

  5. Mysql中where 1=1 和count(0) 使用小技巧

    1. 数据库语句 where 1=1 的用法和作用 这是一种怎样的查询语句呢?首先说明,1=1不是查询语句中的任何关键词,所以,请您放心,不管你会不会使用 这种语句,都没有任何关系,对于您而言,没有任 ...

  6. 【HDU - 2072 】单词数(字符串读入技巧,sstream大法,水题,字符串读入格式)

    题干: lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题. Input 有多组数据,每组一行 ...

  7. HDU 6071 Lazy Running

    链接HDU 6071 Lazy Running 给出四个点1,2,3,4,1和2,2和3,3和4,4和1之间有路相连,现在从2点出发,最后回到2点,要求路径大于等于\(K\),问路径长度最短是多少,\ ...

  8. HDU 1033 水题

    题意还真的不好懂,摸索数据就出来了,注意顺时针和逆时针时候的方向变化 /*  * Author:lonelycatcher  * problem:hdu 1033  * Type:水题  */ #in ...

  9. hdu 1166 排兵布阵

    /* *********************************************** Author :xryz Email :523689985@qq.com Created Time ...

最新文章

  1. python3 中递归的最大次数
  2. AHP层次分析法解决用户价值评估
  3. 龙芯.NET正式发布 开源共享与开发者共成长
  4. hd-sdi转hdmi转换器产品规格参数及接口定义详解
  5. 双足机器人简单步态生成
  6. php 初始化model,TP5 model类研究
  7. struts2权威指南学习笔记:struts2引入自定义库
  8. oracle数据库卡住了无法保存,Oracle数据库使用NFS存储,启动报错提示无法锁定文件...
  9. Proxy 对象简介
  10. 短信开发系列(二):GSM手机短信开发之短信解码
  11. 阿里云申请免费ssl证书并配置nginx
  12. ESL系统的Docker化部署
  13. 核电厂的“神经中枢”——核电厂数字化仪控系统
  14. python十六进制转为二进制_Python进制转换(二进制、十进制和十六进制)
  15. Python网络爬虫(2)- 爬虫翻译程序-含有道、金山、百度翻译
  16. 二叉树基础题(六):树的子结构二叉搜索树的判断镜像二叉树
  17. Linux 命令:realpath 命令
  18. 推荐一个全自动在线做gif进度条
  19. OpenCV4编译链接问题xxxx未定义的引用
  20. 启动print spooler 服务后, 自动停止, 服务不稳定的解决办法

热门文章

  1. 真机调试及上线简略流程
  2. core java 8~9(GUI AWT事件处理机制)
  3. mongoose获取最高分
  4. iview代码片段 去除水平menu底部横线
  5. 从底层重学 Java 之两大浮点类型 GitChat连接
  6. centos7 zookeeper3.5.6单机伪集群部署
  7. Mybatis insert返回主键ID
  8. influxdb mysql对比_InfluxDB读写性能测试
  9. python 生成器推导式
  10. 1052. 卖个萌 (20)