【链接】 我是链接,点我呀:)

【题意】

【题解】

![](https://img2018.cnblogs.com/blog/1251265/201811/1251265-20181114102634106-1195481374.png)
![](https://img2018.cnblogs.com/blog/1251265/201811/1251265-20181114102641042-105691369.png)

题解的作者: manish_joshi

对于任意一个k

因为那条直线(关于x,y的方程可以看出一条直线)的斜率>=

所以肯定会经过第一象限。

因此总是能得到一个k1,k2>=0

连续的1的起点尽可能接近。

【代码】

#include <bits/stdc++.h>
#define LL long long
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
using namespace std; const int N = 1e5; LL la,ra,ta;
LL lb,rb,tb; int main(){
//freopen("D:\\rush.txt","r",stdin);
scanf("%lld%lld%lld",&la,&ra,&ta);
scanf("%lld%lld%lld",&lb,&rb,&tb);
if (la>lb){
swap(la,lb);
swap(ra,rb);
swap(ta,tb);
}
//la <= lb
/*
st1 = la + k1*t1
st2 = lb + k2*t2
dif = st2-st1
= lb-la+k2*t2-k1*t1 = 0 lb-la+k2*t2=k1*t1
t1*k1=k2*t2+lb-la dir = lb-la+k*gcd(t1,t2)
la-lb=k*gcd(t1,t2);
k = (la-lb)/gcd(t1,t2);
*/
LL temp1 = la-lb;
LL temp2 = __gcd(ta,tb);
if (temp1%temp2==0){
LL ans = min(rb-lb+1,ra-la+1);
printf("%lld\n",ans);
}else{
double temp = 1.0*temp1/temp2; LL len1 = ra-la+1,len2 = rb-lb+1;
LL k = (LL) (ceil(temp)); LL delta = lb-la+k*__gcd(ta,tb); LL aa = 1,bb = len1,cc = 1+delta,dd = delta+len2;
LL ans = 0;
ans = max(ans,min(bb,dd)-max(aa,cc)+1); k = (LL) (floor(temp));
delta = lb-la+k*__gcd(ta,tb);
aa = 1,bb = len1,cc = 1+delta,dd = delta+len2;
ans = max(ans,min(bb,dd)-max(aa,cc)+1); printf("%lld\n",ans);
}
return 0;
}

【Mail.Ru Cup 2018 Round 2 C】 Lucky Days的更多相关文章

  1. 【Mail.Ru Cup 2018 Round 2 A】 Metro

    [链接] 我是链接,点我呀:) [题意] [题解] 1:一直往右走的情况. 2:中间某个地方中转 (不会出现超过1次的转弯. (如果超过了和1次是等价的 [代码] #include <bits/ ...

  2. 【Mail.Ru Cup 2018 Round 2 B】 Alice and Hairdresser

    [链接] 我是链接,点我呀:) [题意] [题解] 因为只会增加. 所以. 一开始暴力算出来初始答案 每次改变一个点的话. 就只需要看看和他相邻的数字的值就好. 看看他们是不是大于l 分情况增加.减少 ...

  3. Mail.Ru Cup 2018 Round 2 Problem C Lucky Days

    设在第 $x$ 天二人都 lucky,则有 $\DeclareMathOperator{\lcm}{lcm}$ $ x = y_a t_a + R_a $ $ x= y_b t_ b + R_b$ 约 ...

  4. [题解]Mail.Ru Cup 2018 Round 1 - D. Changing Array

    [题目] D. Changing Array [描述] 给n个整数a[1],...,a[n],满足0<=a[i]<=2^k-1.Vanya可以对这n个数中任一多个数进行操作,即将x变为x' ...

  5. [题解]Mail.Ru Cup 2018 Round 1 - C. Candies Distribution

    [题目] C. Candies Distribution [描述] n个小朋友排排坐吃糖糖,小朋友从左到右编号1到n.每个小朋友手上有一定数量的糖.对于第i个小朋友来说,编号比他小的小朋友中有li个小 ...

  6. [题解]Mail.Ru Cup 2018 Round 1 - B. Appending Mex

    [题目] B. Appending Mex [描述] Ildar定义了一种方法,可以由一个数组产生一个数.具体地,从这个数组中任选一个子集,不在这个子集中的最小的非负整数称为mex,就是由这个数组得到 ...

  7. [题解]Mail.Ru Cup 2018 Round 1 - A. Elevator or Stairs?

    [题目] A. Elevator or Stairs? [描述] Masha要从第x层楼去第y层楼找Egor,可以选择爬楼梯或者坐直升电梯.已知爬楼梯每层需要时间t1:坐直升电梯每层需要时间t2,直升 ...

  8. Mail.Ru Cup 2018 Round 3 B. Divide Candies

    题目链接 分析一下题意可以得到题目要求的是满足下面这个 公式的不同的i,ji,ji,j的方案数; 即(i2+j2)mod&ThinSpace;&ThinSpace; m=0 (n ≤  ...

  9. Mail.Ru Cup 2018 Round 3

    A:签到 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> # ...

随机推荐

  1. java输出双引号

    java输出双引号 直接看例子 //输出双引号 public class Test { public static void main(String[] args) { System.out.prin ...

  2. 91. ExtJS获取父子、兄弟容器元素方法

    转自:https://blog.csdn.net/u014745818/article/details/44957341 1 1.当前对象的父对象(上级对象) this.ownerCt: 2.当前对象 ...

  3. 第2课 Git配置文件的妙用

    2-1 "git config"  指令的用法 文件夹中".git"子文件夹内的config文件的优先权>登录账号的home directory中的.gi ...

  4. XML案例(使用JAXP进行DOM解析)

    1.book.xml <?xml version="1.0" encoding="UTF-8" standalone="no"?> ...

  5. go的语言结构

    一.文件名.关键字与标识符 1.1 文件名 1.go 的源文件已 .go 为后缀名 2.文件名已小写组成 如:simple.go 3.如多个部分组成可用"_" 分割 4.不要包含有 ...

  6. Win7的虚拟Wi-Fi

    前几天无意中发现,Win7的硬件驱动里有个叫Microsoft Virtual WiFi Miniport Adapter的东东,从网上查了一下,可以用来组建临时网络,共享Internet.一块无线网 ...

  7. RabbitMQ .NET消息队列使用入门(二)【多个队列间消息传输】

    孤独将会是人生中遇见的最大困难. 实体类: DocumentType.cs public enum DocumentType { //日志 Journal = 1, //论文 Thesis = 2, ...

  8. 改善用户体验 Web前端优化策略总结

    前端是庞大的,包括HTML.CSS.Javascript.Image.Flash等等各种各样的资源.前端优化是复杂的,针对方方面面的资源都有不同的方式.那么,前端优化的目的是什么? 1. 从用户角度而 ...

  9. js 字符串 处理方法

    charAt() 返回指定索引位置的字符 charCodeAt() 返回指定索引位置字符的 Unicode 值 concat() 连接两个或多个字符串,返回连接后的字符串 fromCharCode() ...

  10. 分割字符串 ExtractStrings

    //分割字符串 ExtractStrings var s: String; List: TStringList; begin s := 'about: #delphi; #pascal, progra ...