题目链接:http://codeforces.com/contest/813/problem/B

题意:就是有一个数叫做不幸运数,满足题目的 n = x^a + y^b,现在给你一个区间[l,r],让你找一个在这个区间里面一个最长的区间使得这个区间里面的所有数都不是不幸运数,让你输出最长区间的区间长度 。

先用两个数组将x的n次方和y的n次方存起来,然后暴力枚举,用map将符合的条件的数存起来,不幸运数的区间就是两个幸运数的位置之差相减再减1。(注意map迭代器的用法)

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pi acos(-1)
const int INF = 0x3f3f3f3f;
const ll N=1e18;
map<ll,ll>ma;
ll x[],y[]; int main()
{
memset(x,,sizeof(x));
memset(y,,sizeof(y));
ll a,b,l,r;
scanf("%I64d%I64d%I64d%I64d",&a,&b,&l,&r);
x[]=;
y[]=;
ma[l-]=;
ma[r+]=;
for(int i=; x[i-]<=N/a; i++)
x[i]=x[i-]*a;
for(int i=; y[i-]<=N/b; i++)
y[i]=y[i-]*b;
for(int i=; x[i]!=; i++)
for(int j=; y[j]!=; j++)
if(x[i]+y[j]<=r&&x[i]+y[j]>=l)
ma[x[i]+y[j]]=;
map<ll,ll>::iterator fir,sec;
sec=ma.begin();
fir=ma.begin();
sec++;
ll ans=;
for(; sec!=ma.end(); fir++,sec++)
ans=max(ans,sec->first-fir->first-);
printf("%I64d",ans);
return ;
}

最新文章

  1. Entity Framework 6 Recipes 2nd Edition(9-7)译-&gt;在WCF服务中序列化代理
  2. java dom4j封装和解析XML
  3. UISegmentedControl和UIStepper的使用
  4. Java NIO 之缓冲区
  5. PHP版本过狗Shell
  6. C++中new和malloc的区别
  7. tooltip提示插件
  8. NOIP2012 国王游戏
  9. $GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;]、$_POST和php://input深入探究三者的区别
  10. asp快速开发方法之分页函数
  11. (转)JavaWeb学习总结(十三)——使用Session防止表单重复提交
  12. 从C# String类理解Unicode(UTF8/UTF16)
  13. tempo 2.0 学习记录
  14. C与C++ 无参函数的区别
  15. javascript如何解析json对javascript如何解析json对象并动态赋值到select列表象并动态赋值到select列表
  16. ASP.NET Core 入门
  17. 国内可用的Internet时间同步服务器地址(NTP时间服务器)
  18. iOS----------Mac维修预约-如何找到电脑维修单
  19. 第七节:WebApi与Unity整合进行依赖注入和AOP的实现
  20. JavaScript字符串转换为数字

热门文章

  1. HTML5 &amp; CSS初学者教程(详细、通俗易懂)
  2. Java基础部分 2
  3. SQLite进阶-15.触发器
  4. Numbers(CodeForces-128D)【思维/list】
  5. selenium (二)
  6. 请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程 ax^2+bx+c=0ax 2 +bx+c=0 的两个解。
  7. xtrabackup原理,整库,单表,部分备份恢复
  8. 以太坊再爆高危漏洞!黑客增发ATN 1100万枚token事件始末
  9. spring-boot-plusV1.2.3发布,CentOS快速安装环境/构建/部署/启动项目
  10. Node.js学习(3)-用express改写留言本