题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5878
题意:找到第一个>=n的数x, 满足 x = 2a3b5c7d;n<=1e9;
打表找到10e9以内的所有符合条件的数,然后二分找到即可;
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<vector>
#include<queue>
#include<set>
using namespace std;
#define met(a, b) memset(a, b, sizeof(a))
#define N 100005
#define INF 0x3f3f3f3f
typedef long long LL;
const LL MAX = 1e9+; int cnt = ;
LL f[N], a2[], a3[], a5[], a7[]; void Init()
{
int P, Q, I, J;
a2[] = a3[] = a5[] = a7[] = ; for(int i=; a2[i-]*<=MAX; i++, I=i) a2[i] = a2[i-]*;
for(int i=; a3[i-]*<=MAX; i++, J=i) a3[i] = a3[i-]*;
for(int i=; a5[i-]*<=MAX; i++, P=i) a5[i] = a5[i-]*;
for(int i=; a7[i-]*<=MAX; i++, Q=i) a7[i] = a7[i-]*; for(int i=; i<I; i++)
{
for(int j=; j<J; j++)
if(MAX/a2[i] >= a3[j])
for(int p=; p<P; p++)
if(MAX/(a2[i]*a3[j]) >= a5[p])
for(int q=; q<Q; q++)
{
if(MAX/(a2[i]*a3[j]*a5[p]) >= a7[q])
f[cnt++] = a2[i]*a3[j]*a5[p]*a7[q];
}
}
sort(f, f+cnt);
} int main()
{
Init(); int T; LL n;
scanf("%d", &T);
while(T--)
{
scanf("%I64d", &n);
int pos = upper_bound(f, f+cnt, n) - f;
if(f[pos-] == n) pos--;
printf("%I64d\n", f[pos]);
}
return ;
}
I Count Two Three---hdu5878(打表+二分)的更多相关文章
-
2016 ACM/ICPC Asia Regional Qingdao Online 1001/HDU5878 打表二分
I Count Two Three Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
-
HDU - 5878 2016青岛网络赛 I Count Two Three(打表+二分)
I Count Two Three 31.1% 1000ms 32768K I will show you the most popular board game in the Shanghai ...
-
HDU 5878 I Count Two Three (打表+二分查找) -2016 ICPC 青岛赛区网络赛
题目链接 题意:给定一个数n,求大于n的第一个只包含2357四个因子的数(但是不能不包含其中任意一种),求这个数. 题解:打表+二分即可. #include <iostream> #inc ...
-
「ZJOI2018」胖(ST表+二分)
「ZJOI2018」胖(ST表+二分) 不开 \(O_2\) 又没卡过去是种怎么体验... 这可能是 \(ZJOI2018\) 最简单的一题了...我都能 \(A\)... 首先我们发现这个奇怪的图每 ...
-
I Count Two Three(打表+排序+二分查找)
I Count Two Three 二分查找用lower_bound 这道题用cin,cout会超时... AC代码: /* */ # include <iostream> # inclu ...
-
[LeetCode] #1# Two Sum : 数组/哈希表/二分查找/双指针
一. 题目 1. Two SumTotal Accepted: 241484 Total Submissions: 1005339 Difficulty: Easy Given an array of ...
-
HDU5878(打表)
I Count Two Three Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
-
GCD(st表+二分)
GCD Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
-
【BZOJ-4310】跳蚤 后缀数组 + ST表 + 二分
4310: 跳蚤 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 180 Solved: 83[Submit][Status][Discuss] De ...
随机推荐
-
ubuntu 16.04 apt-get error: in the drive /media/cdrom and press
If you have an internet connection, you can safely comment out the line starting with deb cdrom: ... ...
-
android-数据存储之SharedPreferences
数据存储:SharedPreferences 一.基础概要 1.说明 1>主要用于存储单一小数据: 2>存储类型:boolean.float.String.long.int 3>数据 ...
-
Redis 笔记与总结6 Redis 高级应用之 事务处理、持久化操作、pub_sub、虚拟内存
3.事务处理 redis 对事务的支持目前还比较简单. redis 只能保证一个 client 发起的事务中的命令可以连续的执行,而中间不会插入其他 client 的命令. 由于 redis 是单线 ...
-
poj 2923(状态压缩dp)
题意:就是给了你一些货物的重量,然后给了两辆车一次的载重,让你求出最少的运输次数. 分析:首先要从一辆车入手,搜出所有的一次能够运的所有状态,然后把两辆车的状态进行合并,最后就是解决了,有两种方法: ...
-
C++Vector使用方法
C++内置的数组支持容器的机制,可是它不支持容器抽象的语义.要解决此问题我们自己实现这种类.在标准C++中,用容器向量(vector)实现.容器向量也是一个类模板.标准库vector类型使用须要的头文 ...
-
JavaScript 获取Select标签选中的项
<select name="select1" id="select1" onchange=setInput()> <option value= ...
-
洛谷 P2205 解题报告
P2205 画栅栏Painting the Fence 题目描述 \(Farmer\) \(John\) 想出了一个给牛棚旁的长围墙涂色的好方法.(为了简单起见,我们把围墙看做一维的数轴,每一个单位长 ...
-
stc15f104w模拟串口使用
stc15f104w单片机体积小,全8个引脚完全够一般的控制使用,最小系统也就是个电路滤波----加上一个47uf电容和一个103电容即可,但因为其是一个5V单片机,供电需要使用5V左右电源. 该款单 ...
-
bootstrap boosting bagging辨析
http://blog.csdn.net/jlei_apple/article/details/8168856
-
volatile的实现原理与应用
Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令. vola ...