题目地址

CF1260C

题目大意

现有\(10^{100}\)块木板需要涂漆,第x块如果是x是a的倍数,则涂一种颜色,是b的倍数,则涂另一种颜色。如果既是a又是b的倍数,那么两种颜色都可以涂;如果连续有k块板的颜色是一样的,则输出REBEL,否则输出OBEY。问是否能避免被处死。我们肯定优先使不被处死。

Solution

一周前被这个题目吊打,一周后吊打这个题目

令 \(a < b\)。b染的色就会是 \(1b,2b,...,kb\) 这些格子,而最长的颜色段应该是由 \(a\) 的倍数组成的,而且一定是在两个 \(b\) 的倍数之间。两个 \(b\) 的倍数间有 \(b-1\) 个格子,是固定的,想要让这中间 \(a\) 的倍数尽可能多,就要让段 \(a\) 的倍数中的第一个数离上一个 \(b\) 的倍数最近。假设这个距离为 \(c\),那么就相当于满足方程:

\[ax+by=c
\]

(这不就是扩展欧几里得吗!!!)别激动,我们只要考虑当这个方程有解时,\(c\) 可以取的最小的正整数是多少。所以这是裴蜀定理。因为要使这个方程有解,就要满足 \(gcd(a,b)|c\) 所以 \(c\) 最小取 \(gcd(a,b)\)

处理一下细节,最长的连续的颜色就会是 (b-gcd(a,b)-1)/a)+1 (先单独算上 \(gcd(a,b)\) 这个位置的这个 \(1\),后面这段每 \(a\) 个数就有一个 \(1\))

Code

Talk is cheap.Show me the code.

#include<bits/stdc++.h>
using namespace std;
inline int read() {
int x=0,f=1; char ch=getchar();
while(ch<'0' || ch>'9') { if(ch=='-') f=-1; ch=getchar(); }
while(ch>='0'&&ch<='9') { x=(x<<3)+(x<<1)+(ch^48); ch=getchar(); }
return x * f;
}
int a,b,K;
int gcd(int a,int b) {
return (b==0?a:gcd(b,a%b));
}
void work() {
a = read(), b = read(), K = read();
if(a>b) swap(a,b);
printf("%s\n",(((b-gcd(a,b)-1)/a)+1<K?"OBEY":"REBEL"));
}
int main()
{
int T = read();
while(T--) work();
return 0;
}

Summary

这道题好水呀,注意细节就OK啦

CF1260C Infinite Fence 题解(扩欧)的更多相关文章

  1. CF1182F Maximum Sine【类欧,扩欧】

    题目链接:洛谷 题目描述:求整数$x\in [a,b]$使得$|2px \ mod \ 2q-q|$最小,如果有多个$x$输出最小的. 数据范围:$1\leq a,b,p,q\leq 10^9$ 第一 ...

  2. 【POJ】2115 C Looooops(扩欧)

    Description A Compiler Mystery: We are given a C-language style for loop of type for (variable = A; ...

  3. 洛谷P4774 [NOI2018]屠龙勇士 [扩欧,中国剩余定理]

    传送门 思路 首先可以发现打每条龙的攻击值显然是可以提前算出来的,拿multiset模拟一下即可. 一般情况 可以搞出这么一些式子: \[ atk_i\times x=a_i(\text{mod}\ ...

  4. 【洛谷】【扩欧】P1516 青蛙的约会

    [题目描述] 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有 ...

  5. 欧几里得(辗转相除gcd)、扩欧(exgcd)、中国剩余定理(crt)、扩展中国剩余定理(excrt)简要介绍

    1.欧几里得算法(辗转相除法) 直接上gcd和lcm代码. int gcd(int x,int y){ ?x:gcd(y,x%y); } int lcm(int x,int y){ return x* ...

  6. Educational Codeforces Round 77 (Rated for Div. 2) C. Infinite Fence

    C. Infinite Fence 题目大意:给板子涂色,首先板子是顺序的,然后可以涂两种颜色,如果是r的倍数涂成红色,是b的倍数涂成蓝色, 连续的k个相同的颜色则不能完成任务,能完成任务则输出OBE ...

  7. 【POJ】 1061 青蛙的约会(扩欧)

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 119148   Accepted: 25070 Descript ...

  8. 【NOI 2018】屠龙勇士(扩欧)

    题意理解错了... 一把剑打一条龙,打了$x$次后如果龙不死,你就Game Over了. 显然,面对每条龙使用的剑是固定的,如果所有龙中有一条没打死你就挂了. 可以知道,可行的答案集合就是所有龙的可行 ...

  9. 【POJ】1061 青蛙的约会 / 【BZOJ】1477(扩欧)

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 119148   Accepted: 25070 Descript ...

随机推荐

  1. 打造boost的trhead环境

    windows下的环境 1.官网下载boost_1_68_0解压后用VS2010的命令行工具运行bootstrap.bat 2.用VS2005命令行工具运行 bjam.exe link=static ...

  2. $destroy——angular

    参考资料:[http://odetocode.com/blogs/scott/archive/2013/07/16/angularjs-listening-for-destroy.aspx]

  3. 工作中经常用到 github 上优秀、实用、轻量级、无依赖的插件和库

    原文收录在 GitHub博客 ( https://github.com/jawil/blog ) ,喜欢的可以关注最新动态,大家一起多交流学习,共同进步,以学习者的身份写博客,记录点滴. 由于gith ...

  4. [Usaco2017 Jan]Promotion Counting

    n只奶牛构成了一个树形的公司,每个奶牛有一个能力值pi,1号奶牛为树根.问对于每个奶牛来说,它的子树中有几个能力值比它大的.Inputn,表示有几只奶牛 n<=100000接下来n行为1-n号奶 ...

  5. ubutnu同时安装OpenCV2和OpenCV3及contrib

    1.OpenCV2源码安装 安装依赖项 sudo apt-get install build-essential //build-essential是c语言的开发包,包含了gcc make gdb和l ...

  6. win10安装Tensorflow1.9GPU版本

    前言 看到DateWhale出了一篇安装教程(微信公众号DateWhale),决定体验一下Tensorflow1.9的GPU版本..其实一开始装的是2.0,但是tf.Session()就报错了,说是2 ...

  7. 20191127 Spring Boot官方文档学习(4.10)

    4.10.使用SQL数据库 从使用JdbcTemplate直接的JDBC访问到完整的"对象关系映射"技术(例如Hibernate),Spring框架为使用SQL数据库提供了广泛的支 ...

  8. js五种不同的遍历 (filter, map,foreach,every, some,)

    var arr=[1,2,"a",2,4,1,4,"a",5,6,7,8,"aa","bb","c" ...

  9. python 并发编程 多进程 互斥锁 目录

    python 并发编程 多进程 互斥锁 模拟抢票 互斥锁与join区别

  10. C语言I-博客作业05

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 C语言1博客作业05 我在这个课程的目标是 学会运用函数编代码 这个作业在那个具体方面帮助我实现目标 写C语言作业的时候,编代码的实践中 ...