CodeForces - 1260B Obtain Two Zeroes 题解

原题

又拖黑了 在这里插入图片描述
https://codeforces.com/problemset/problem/1260/B

题目大意

给出一对a,b,在多次 a : = a − x , b : = b − 2 x 或 者 a : = a − 2 x , b : = b − x ( x ∈ N ∗ ) a:=a−x , b:=b−2x 或者 a:=a−2x, b:=b−x(x∈N^*) a:=ax,b:=b2xa:=a2x,b:=bx(xN)后,能否使a和b同时为0

题目分析

熟悉的赋值符号……这道题我记得好像做过,也没有用二分,推导过程如下:
x , y x,y x,y为每次变化后的数值, i i i为每次变化的值
那么有
a − i = x , b − 2 i = y a-i=x,b-2i=y ai=x,b2i=y或者 a − 2 i = x , b − i = y a-2i=x,b-i=y a2i=x,bi=y无论是哪一个相加后得到 ( a + b ) − 3 i = x + y (a+b)-3i=x+y (a+b)3i=x+y ( a + b ) % 3 = x + y (a+b)\%3=x+y (a+b)%3=x+y此处 x + y = 0 x+y=0 x+y=0所以 ( a + b ) % 3 = 0 (a+b)\%3=0 (a+b)%3=0有两种情况不成立

a − i = 0 , b − 2 i > 0 或 a − 2 i > 0 , b − i = 0 a-i=0,b-2i>0或a-2i>0,b-i=0 ai=0,b2i>0a2i>0,bi=0
a > 2 b , b > 2 a a>2b,b>2a a>2b,b>2a时不成立

代码

#include<cstdio>

int main()
{
    int T;
    scanf("%d",&T);
    while (T--)
    {
        int a,b;
        scanf("%d%d",&a,&b);
        if ((a + b) % 3 == 0 && (a <= 2 * b && b <= 2 * a)) printf("YES\n");else printf("NO\n");
    }
    return 0;
}

这应该是专题1的最后一题了,明天开始奋战专题2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值