zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 77 (Rated for Div. 2) C. Infinite Fence

    C. Infinite Fence

    题目大意:给板子涂色,首先板子是顺序的,然后可以涂两种颜色,如果是r的倍数涂成红色,是b的倍数涂成蓝色,

    连续的k个相同的颜色则不能完成任务,能完成任务则输出OBEY,否则输出REBEL

    首先我们可以求b,r的gcd d=gcd(b,r)

    然后b/=d,r/=d

    然后让r<b  if(r>b) swap(b,r)

    然后如果要连续k个板子颜色涂成r,则要占的长度是 len = r*(k-1)+1

    如果这个长度len>b 则可以完成,否则不可以完成

    这个原因应该很好理解,但是为什么b,r 要先处理一下都除以d呢?

    这个是因为如果b,r 不互质,则它们有一个最大公约数,所以他们每走一步都是最大公约数的整数倍数

    如果本来就互质,那么最大公约数就是1,如果不互质,那么这个最大公约数d,其实就相当于这个1

    所以除以d 不会影响结果。

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <queue>
    #include <iostream>
    #include <map>
    #include <vector>
    #define inf 0x3f3f3f3f-=
    #define debug(x) cout<<"x = "<<x<<endl;
    using namespace std;
    const int maxn=1e6+10;
    typedef long long ll;
    ll gcd(ll a,ll b){
        return b==0?a:gcd(b,a%b);
    }
    
    int main(){
        int t;
        scanf("%d",&t);
        while(t--){
            ll r,b,k;
            scanf("%lld%lld%lld",&r,&b,&k);
            ll d=gcd(r,b);
            r/=d,b/=d;
            if(r>b) swap(r,b);
            if(r*(k-1)+1<b) printf("REBEL
    ");
            else printf("OBEY
    ");
        }
    }
    View Code
  • 相关阅读:
    jsp第八次作业
    jsp第七次作业
    jsp第六次作业
    jsp第五次作业
    jsp第二次作业
    软件测试第一次作业
    第一本书的学习笔记
    第零次作业
    software engineering task0
    自己创建的mysql用户无法使用密码登录,直接用用户名就可以登录的问题
  • 原文地址:https://www.cnblogs.com/EchoZQN/p/11979482.html
Copyright © 2011-2022 走看看