CodeForce-813B The Golden Age(数学+枚举)
The Golden Age
题目大意:如果一个数t=x^a+y^b(a,b都是大于等于0的整数)那就是一个unlucky数字。给你x,y,l,r(2 ≤ x, y ≤ 10^18, 1 ≤ l ≤ r ≤ 10^18),求出l到r内没有unlucky数字的最小区间。
解题思路:可以知道x,y最多也不会超过60次方(2^60>1e18),所以可以直接枚举x^a+y^b的值存到vector里,然后排序,找出间v[i+1]-v[i]-1(因为两端都是unlucky数字所以要两个端点都不算在长度内)最大的区间即可。要注意vector为空和两个端点的特判。还有数字的溢出问题,这个没办法直接判断是否溢出,可以通过使用一个d=r,比如每次x次方加一的时候,就将d/x,当d==0说明x^a已经超出r的范围了。
#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <queue>
// #define _ ios::sync_with_stdio(false)
// #define cin.tie(0)
using namespace std;
// #define rep(i,x,y) for(int i=x;i<y;i++)
typedef long long ll;
const int MAXN=2e5+5; vector<ll> v; int main()
{
ll x,y,l,r;
cin>>x>>y>>l>>r;
ll tx,ty;
ll d1=r;
for(int i=0;i<=61;i++)
{
if(i!=0)
d1/=x;
if(d1==0)
break;
if(i==0)
tx=1;
else
tx*=x;
ll d2=r;
for(int j=0;j<=61;j++)
{
if(j!=0)
d2/=y;
if(d2==0)
break;
if(j==0)
ty=1;
else
ty*=y;
if(tx+ty>=l&&tx+ty<=r)
v.push_back(tx+ty);
}
} if(!v.size())
{
cout<<r-l+1<<endl;
return 0;
} ll ans=0;
sort(v.begin(),v.end());
for(int i=0;i<v.size();i++)
{
if(i==0&&v[0]!=l)
ans=max(ans,v[i]-l);
if(i==v.size()-1)
ans=max(ans,r-v[i]);
else
ans=max(ans,v[i+1]-v[i]-1);
}
cout<<ans<<endl;
return 0;
}
CodeForce-813B The Golden Age(数学+枚举)的更多相关文章
- Codeforces 813B The Golden Age(数学+枚举)
题目大意:如果一个数t=x^a+y^b(a,b都是大于等于0的整数)那就是一个unlucky数字.给你x,y,l,r(2 ≤ x, y ≤ 10^18, 1 ≤ l ≤ r ≤ 10^18),求出l到 ...
- The Golden Age CodeForces - 813B (数学+枚举)
Unlucky year in Berland is such a year that its number n can be represented as n = xa + yb, where a ...
- Why The Golden Age Of Machine Learning is Just Beginning
Why The Golden Age Of Machine Learning is Just Beginning Even though the buzz around neural networks ...
- 【数学】codeforces B. The Golden Age
http://codeforces.com/contest/813/problem/B [题意] 满足n=x^a+y^b的数字为不幸运数字,a,b都是非负整数: 求闭区间[l,r]上的最长的连续幸运数 ...
- bzoj 1257: [CQOI2007]余数之和sum 数学 && 枚举
1257: [CQOI2007]余数之和sum Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 1779 Solved: 823[Submit][Sta ...
- 2-08. 用扑克牌计算24点(25) (ZJU_PAT 数学 枚举)
题目链接:http://pat.zju.edu.cn/contests/ds/2-08 一副扑克牌的每张牌表示一个数(J.Q.K分别表示11.12.13,两个司令都表示6).任取4张牌.即得到4个1~ ...
- FZU 2125 简单的等式 【数学/枚举解方程式】
现在有一个等式如下:x^2+s(x,m)x-n=0.其中s(x,m)表示把x写成m进制时,每个位数相加的和.现在,在给定n,m的情况下,求出满足等式的最小的正整数x.如果不存在,请输出-1. Inpu ...
- 【数学+枚举】OpenJ_POJ - C17J Pairs
https://vjudge.net/contest/171652#problem/J [题意] 问有多少个正整数对(x,y),使得存在正整数p,q满足 1 <= T <= 15 1 &l ...
- Educational Codeforces Round 22 B. The Golden Age(暴力)
题目链接:http://codeforces.com/contest/813/problem/B 题意:就是有一个数叫做不幸运数,满足题目的 n = x^a + y^b,现在给你一个区间[l,r],让 ...
随机推荐
- 线性代数期末大总结I
行列式 n阶行列式的计算: \[\left|\begin{matrix}a_{11} & a_{12} & \cdots & a_{1n} \\a_{21} & a_{ ...
- 1016 Phone Bills (25分)
复建的第一题 理解题意 读懂题目就是一个活,所以我们用观察输出法,可以看出来月份,以及时间和费用之间的关系. 定义过程 然后时间要用什么来记录呢?day hour minute 好麻烦呀..用字符串吧 ...
- html 去除重复边框
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>& ...
- ARM—异常中断处理
文章目录 一. ARM程序执行流程 二. ARM工作模式 三. ARM中异常中断的种类 四. 异常中断向量表及优先级 五. 异常中断用到的寄存器 六. ARM进入处理异常中断时的操作 七. ARM退出 ...
- 项目报错:Invalid bound statement (not found):
出现这种错误有好多种情况,常见的错误有以下这些: 1.检查xml文件所在package名称是否和Mapper interface所在的包名 <mapper namespace="com ...
- express中session的基本使用
1.首先安装express-session模块 npm install express-session --save 2.引入express-session,以及设置中间键 var session = ...
- Ratel:一直站在Android逆向巅峰的平头哥
本文来源:带动行业内卷,渣总义不容辞 字越少事儿越大,请关注github(可以点击阅读原文): https://github.com/virjarRatel 平头哥(ratel)是一个Android逆 ...
- C# 中的反射机制
C# 中的反射 首先我们通过两个实例来说明反射的大体概念.B超:大家体检的时候大概都做过B超,B超可以透过肚皮探测到你内脏的生理情况.这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内发射 ...
- python编程指南
1.python文件引入同一个模块的python文件, 在命令行执行的时候需要定位到模块内部,加入参数PYTHONPATH=../ 在pycharm中 import package一般都是按照绝对路 ...
- 1.3RDD的设计与运行原理
此文为个人学习笔记如需系统学习请访问http://dblab.xmu.edu.cn/blog/1709-2/ 提供一种通用的数据抽象 RDD典型的执行过程如下: RDD读入外部数据源(或者内存中的集合 ...