cf自就

B. Laura and Operations(规律)

Example
input
Copy
 
   
3
1 1 1
2 3 2
82 47 59
output
Copy
1 1 1
0 1 0      :是或不行
1 0 0

存在若干数量的 、、1、2、3 ,可以执行任意次如下操作:

删除一个 � 一个 � ,添加一个 � 、、(�、�、�∈{1,2,3},�≠�≠�) 。

问能否通过操作使得只剩下 1 、只剩下 2 、只剩下 3 。

做法:

以只剩 1 举例,操作对于 、2、3 的数量的奇偶性的改变是相同的,由于最终状态 、2、3 都要有 0 个,所以初始 、2、3 数量奇偶不同则一定不行。

对于 、2、3 数量奇偶相同的情况,考虑如下操作:

若 、2、3 数量相同,则删光 、2、3 ,达成目标,否则循环:

1. 删除一组 、2、3 ,添加一个 1 。

2. 删除 1 和 、2、3 中数量较多的那个。

一轮操作之后 、2、3 数量的差一定会减少 2 。

特殊地,如果 1 的个数初始是 0 ,则必须存在一组 、2、3 才能开始操作。

#include <bits/stdc++.h>

using namespace std;

int main() {
    cin.tie(0)->sync_with_stdio(false);
    int T;
    cin >> T;
    while (T--) {
        int a, b, c;
        cin >> a >> b >> c;
        auto check = [&](int a, int b, int c) -> bool {
            return b % 2 == c % 2 and a + min(b, c);
        };
        cout << check(a, b, c) << ' ' << check(b, a, c) << ' ' << check(c, a, b) << '\n';
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值