51nod1010(枚举+二分)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1010
题意:中文题诶~
思路:求第一个比 x (1<=x<=1e18)大或者等于的数y, 且y的因子只有2, 3, 5,即y=pow(2, i)*pow(3, j)*pow(5, k);
那么显然我们可以通过枚举i, j, k求出所有由2, 3, 5因子构成的数,并将其存入数组中,再二分查找数组中第一个大于等于x的数即为答案;
代码:
#include <bits/stdc++.h>
#define ll long long
#define MAXN 100000
using namespace std; ll a[MAXN];
const ll inf=1e18; ll get_pow(ll x, int n){
ll ans=;
while(n){
if(n&){
ans*=x;
}
x*=x;
n>>=;
}
return ans;
} void geloutingyu(void){ //**注意不能直接用pow(),会有精度问题
int pos=;
for(ll i=; get_pow(, i)<=inf; i++){
for(ll j=; get_pow(, i)*get_pow(, j)<=inf; j++){
for(ll k=; get_pow(, i)*get_pow(, j)*get_pow(, k)<=inf; k++){
a[pos++]=get_pow(, i)*get_pow(, j)*get_pow(, k);
}
}
}
} int main(void){
int t;
ll x;
geloutingyu();
sort(a, a+MAXN);
cin >> t;
while(t--){
cin >> x;
if(x==){
cout << << endl;
continue;
}
int pos=lower_bound(a, a+MAXN, x)-a;
cout << a[pos] << endl;
}
return ;
}
51nod1010(枚举+二分)的更多相关文章
- HDU4430 Yukari's Birthday(枚举+二分)
Yukari's Birthday HDU4430 就是枚举+二分: 注意处理怎样判断溢出...(因为题目只要10^12) 先前还以为要用到快速幂和等比数列的快速求和(但肯定会超__int64) 而 ...
- CSU OJ PID=1514: Packs 超大背包问题,折半枚举+二分查找。
1514: Packs Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 61 Solved: 4[Submit][Status][Web Board] ...
- 4 Values whose Sum is 0(枚举+二分)
The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, compute ...
- Codeforces Round #379 (Div. 2) C. Anton and Making Potions 枚举+二分
C. Anton and Making Potions 题目连接: http://codeforces.com/contest/734/problem/C Description Anton is p ...
- HDU 4282 A very hard mathematic problem --枚举+二分(或不加)
题意:问方程X^Z + Y^Z + XYZ = K (X<Y,Z>1)有多少个正整数解 (K<2^31) 解法:看K不大,而且不难看出 Z<=30, X<=sqrt(K) ...
- Subset---poj3977(折半枚举+二分查找)
题目链接:http://poj.org/problem?id=3977 给你n个数,找到一个子集,使得这个子集的和的绝对值是最小的,如果有多种情况,输出子集个数最少的: n<=35,|a[i]| ...
- hdu 5288 OO’s Sequence 枚举+二分
Problem Description OO has got a array A of size n ,defined a function f(l,r) represent the number o ...
- codeforces 613B B. Skills(枚举+二分+贪心)
题目链接: B. Skills time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- Codeforces gym101612 L.Little Difference(枚举+二分)
传送:http://codeforces.com/gym/101612 题意:给定一个数n(<=1e18),将n分解为若干个数的成绩.要求这些数两两之间的差值不能大于1. 分析: 若n==2^k ...
随机推荐
- Java_注解_异常_01_ElementType cannot be resolved to a variable
一.异常现象: 自定义注解时, @Retention和@Target都能导入进来,但是却报下列错误: RetentionPolicy cannot be resolved to a variable ...
- bison 编译sql的基本知识
一.bison是干什么的? bison 是一个语法分析器,把用户输入的内容,根绝在.y文件中事先定义好的规则,构建一课语法分析树.(所谓的规则就是,匹配上对应字符之后,执行相应的动作.) 1.一个简单 ...
- 设计模式 之 《观察者模式 (Observer)》
#ifndef __OBSERVER_MODEL__ #define __OBSERVER_MODEL__ #include <string> #include <iostream& ...
- innerdb disable error
innodb=OFF ignore-builtin-innodb skip-innodbdefault-storage-engine=myisam default-tmp-storage-engine ...
- 脚本手动执行正常,放cron中执行有问题的原因
问题原因: 1. crond服务没启动 2. 环境变量如 PATH LANG SHELL 等设置不对 3. 脚本中引用的文件地址是相对路径,而非绝对路径. 排查步骤: 以 check ...
- poj2420 A Star not a Tree? 模拟退火
题目大意: 给定n个点,求一个点,使其到这n个点的距离最小.(\(n \leq 100\)) 题解 模拟退火上 #include <cmath> #include <cstdio&g ...
- 用VBA计算两个日期之间的工作日(去掉周末两天)
最近公司HR和Finance想算员工的工作天数,想让我帮忙写些VBA,自己从网上找了下代码,自己再改改,以下来自网络. 计算两个日期之间的工作日,用VBA,因量大,最好用数组做 Sub kk() Di ...
- Java中CountDownLatch类的使用
0.CountDownLatch作用 1) Java api中的解释:一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 2) CountDownLatch可以使J ...
- IPC的使用
IPC,Inter-Processor Communication是SYS/BIOS处理核间通信的组件: IPC的几种应用方式: 1.最小使用(Minimal use) 这种情况是通过核间的通知机制( ...
- 【转】 Pro Android学习笔记(七四):HTTP服务(8):使用后台线程AsyncTask
目录(?)[-] 5秒超时异常 AsyncTask 实现AsyncTask抽象类 对AsyncTask的调用 在哪里运行 其他重要method 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注 ...