博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【2019年乐山师范学院程序设计大赛 --- A. 2-3-numbers】丑数,二分
阅读量:2038 次
发布时间:2019-04-28

本文共 1237 字,大约阅读时间需要 4 分钟。

【2019年乐山师范学院程序设计大赛 --- A. 2-3-numbers】丑数,二分

题目来源:

Description

如果一个正整数可以被表示成 2x · 3y( x, y 都是非负整数)的形式,那么这个正整数就称作为 2-3-integer。换句话说,这些称作 2-3-integer 的正整数如果有质因子,那么只能包含 2 和 3。

比如,整数 1、6、9、108是 2-3-integer,而 5、10、21、120 不是。
给定区间 [ l, r ],计算出区间内含有多少个 2-3-integer。

Input

输入仅有一行,包含两个整数 l 和 r (1  ≤ l ≤ r ≤  2 · 109)。

Output

输出一个整数,表示区间 [ l, r ] 内的 2-3-integer 的个数。

Sample Input

100 200

Sample Output

5

解题思路:

将所有范围内符合的2-3-integer的预先处理出来,然后二分查找即可。

(今天我才知道这叫丑数。。。 还是接触的太少啊)

AC代码1:

#include 
using namespace std;#define SIS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)#define endl '\n'typedef long long ll;const int MAXN = 1e3+5;ll arr[MAXN];void init(){
arr[0]=1; int j=0,k=0; for(int i=1;i
> l >> r; cout << upper_bound(arr,arr+MAXN,r)-lower_bound(arr,arr+MAXN,l) << endl; return 0;}

上面是我的思路,下面是一个朋友的思路

AC代码2:

#include 
using namespace std;#define SIS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)#define endl '\n'typedef long long ll;int main(){
SIS; ll l,r,ans=0; cin >> l >> r; for(ll i=1;i<=r;i<<=1) {
ll num=i; while(num<=r) {
if(num>=l) ans++; num*=3; } } cout << ans << endl; return 0;}

转载地址:http://fsyof.baihongyu.com/

你可能感兴趣的文章
创建型模式之原型模式
查看>>
结构型模式之适配器模式(Adapter)
查看>>
结构型模式之桥接模式(Bridge)
查看>>
结构型模式之组合模式(Composite)
查看>>
结构型模式之装饰(Decorator)
查看>>
结构型模式之外观模式(Facade)
查看>>
结构型模式之享元模式(FlyWeight)
查看>>
结构型模式之代理模式(Proxy)
查看>>
行为型模式之职责链模式(Chain of responsibility)
查看>>
行为型模式之命令模式(command)
查看>>
行为型模式之解释器模式(Interpreter)
查看>>
行为型模式之迭代器模式(Iterator)
查看>>
行为型模式之中介者模式(Mediator)
查看>>
行为型模式之备忘录模式(Memento)
查看>>
行为型模式之观察者模式(Observer)
查看>>
行为型模式之状态模式(State)
查看>>
行为型模式之策略模式(Strategy)
查看>>
行为型模式之模板方法模式(TemplateMethod)
查看>>
行为型模式之访问者模式(Visitor)
查看>>
大小端详解
查看>>