题目大意:如果一个数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数字的最小区间。

解题思路:可以知道a,b最多也不会超过60(2^60>1e18),所以可以直接枚举x^a+y^b的值存到vector里,然后排序,遍历一下vector,找出v[i+1]-v[i]-1(因为两端都是unlucky数字所以要两个端点都不算在长度内)最大的区间即可。要注意vector为空和两个端点的特判。还有数字的溢出问题,这个没办法直接判断是否溢出,可以通过使用一个d=r,比如每次x次方加一的时候,就将d/x,当d==0说明x^a已经超出r的范围了。

代码:

 1 #include<iostream>
 2 #include<vector>
 3 #include<algorithm>
 4 using namespace std;
 5 typedef long long ll;
 6
 7 vector<ll>v;
 8
 9 int main(){
10     ll x,y,l,r;
11     cin>>x>>y>>l>>r;
12     ll tx,ty;
13     ll d1=r;
14     for(int i=0;i<=61;i++){
15         if(i!=0)
16             d1/=x;
17         if(d1==0)
18             break;
19         if(i==0)
20             tx=1;
21         else
22             tx*=x;
23         ll d2=r;
24         for(int j=0;j<=61;j++){
25             if(j!=0)
26                 d2/=y;
27             if(d2==0)
28                 break;
29             if(j==0)
30                 ty=1;
31             else
32                 ty*=y;
33             if(tx+ty>=l&&tx+ty<=r){
34                 v.push_back(tx+ty);
35             }
36         }
37     }
38     //vector为空的情况
39     if(!v.size()){
40         cout<<r-l+1<<endl;
41         return 0;
42     }
43
44     ll ans=0;
45     sort(v.begin(),v.end());
46     for(int i=0;i<v.size();i++){
47         //如果l不是unlucky数字,那就额外计算v[0]-l这段区间
48         if(i==0&&v[0]!=l)
49             ans=max(ans,v[i]-l);
50         //如果r不是unlucky数字,就额外计算r-v[v.size()-1]这段区间
51         if(i==v.size()-1){
52             if(!sign2)
53                 ans=max(ans,r-v[i]);
54         }
55         else
56             ans=max(ans,v[i+1]-v[i]-1);
57     }
58     cout<<ans<<endl;
59 }

转载于:https://www.cnblogs.com/fu3638/p/7117154.html

Codeforces 813B The Golden Age(数学+枚举)相关推荐

  1. Golden Age Project Comp-2A压缩器评测

    Golden Age Project继续寻求将经典设计带到大众可及的范围内,这款价格低廉的LA-2A. 与Comp-3A固态光学压缩器同时发布的还有Golden Age Project的Comp-2A ...

  2. B. Power Sequence(数学+枚举)Codeforces Round #666 (Div. 2)

    原题链接: https://codeforces.com/contest/1397/problem/B 测试样例: input 3 1 3 2 output 1 input 3 1000000000 ...

  3. 【CodeForces - 485D】Maximum Value (枚举,用数组离散化,数学,取模运算,因子,筛法)

    题干: You are given a sequence a consisting of n integers. Find the maximum possible value of  (intege ...

  4. 枚举 ---- B. RPG Protagonist[Educational Codeforces Round 94 (Rated for Div. 2)]数学枚举

    B. RPG Protagonist 题目大意:就是你有两个人,每个人都有一个最大的体力值p和f,这两个人要去搬运剑和盾牌,剑的数量是cnts,盾的数量是cntw,每个剑的重量是是s,每个盾的重量是w ...

  5. CF思维联系–CodeForces - 222 C Reducing Fractions(数学+有技巧的枚举)

    ACM思维题训练集合 To confuse the opponents, the Galactic Empire represents fractions in an unusual format. ...

  6. CodeForces 444C. DZY Loves Physics(枚举+水题)

    转载请注明出处:http://blog.csdn.net/u012860063/article/details/37509207 题目链接:http://codeforces.com/contest/ ...

  7. Educational Codeforces Round 11A. Co-prime Array 数学

    地址:http://codeforces.com/contest/660/problem/A 题目: A. Co-prime Array time limit per test 1 second me ...

  8. CodeForces - 803C Maximal GCD(贪心 + 枚举)

    链接一 链接二 You are given positive integer number n. You should create such strictly increasing sequence ...

  9. CodeForces - 765D Artsem and Saunders(数学化简+构造+思维)

    题目链接:点击查看 题目大意:给出一个序列f(x),要求我们构造出两个序列g(x)和h(x),满足: g(h(x))=x g(x)定义域[1,n],值域[1,m] h(g(x))=f(x) h(x)定 ...

最新文章

  1. pandas dataframe bool索引的使用
  2. java 待在原页面 代码_现在java后台,只要修改一点点代码,前段页面就报500,必须重新登录才行?...
  3. AnkhSVN 1.0.2778 简体中文版发布
  4. ES6——举个例子理解Promise的原理和使用
  5. 《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一一2.5 为跨年度的个人参赛选手构造记录...
  6. Kong-dashboard 安装 启动运行
  7. ​inotify+rsync实时数据同步实践讲解17
  8. 【白皮书分享】2020年短视频全链路营销白皮书.pdf(附下载链接)
  9. MegaCli查看RIAD相关信息
  10. 51nod 1577 线性基
  11. 在 Mac 中 使用 Safari 常出现「此网页正使用大量内存...」如何修复?
  12. ICSharpCode.SharpZipLib实现压缩解压缩
  13. 智能车基于RT1064+无线串口透传模块利用MATLAB辅助调节PID参数
  14. oracle rman迁移spfile,RMAN 异机迁移实战操作-附加常用命令
  15. rpx单位的换算的过程
  16. 使用zepto实现QQ消息左滑删除效果
  17. 在Qt中使用OpenGL(四)
  18. 网站统计IP PV UV实现原理
  19. 中国少儿模特明星盛典 《荣耀王者》主题曲 即将全网发布
  20. 汇编指令-CMP、TEQ

热门文章

  1. Linux ext2文件系统小结
  2. [技术速递]MSDN在线改版,新风格新体验
  3. Struts2教程6:在Action类中获得HttpServletResponse对象的四种方法
  4. Linux 自定义命令
  5. C语言动态内存相关函数
  6. Linux QtCreator 设置mingw编译器生成windows程序
  7. ubuntu 安装 Terminator
  8. Linux文件类型有哪些?
  9. Session 过期问题处理
  10. Serializable And Parcelable