AtCoder Beginner Contest 369 题ABCD详细题解--包含解题思路和两种语言(C++,Python)实现

前言:

        本文为AtCoder Beginner Contest 369 题ABCD详细题解,包括题目大意,详细的解题思路和两种语言描述,觉的有帮助或者写的不错可以点个赞

几天前的比赛拖的有点久了

比赛题目连接:Tasks - AtCoder Beginner Contest 369

目录

题A:

题目大意和解题思路:

代码(C++):

代码(Python):

题B:

题目大意和解题思路:

代码(C++):

代码(Python):

题C:

题目大意和解题思路:

代码(C++):

代码(python):

题D:

题目大意和解题思路:

代码(C++):

代码(Python):


题A:

A - 369 (atcoder.jp)

题目大意和解题思路:

题目意思就是说,给定两个整数 A 和 B,要找出有多少个整数 x

使得 A、B、x 这三个数可以排列成等差数列

现在(假设A<=B),就是找出一个x, 使得A - x == B - A == x - B有三种情况:

当A == B的时候,x只有一种情况,就是A == B == x,此时公差d = 0

当A != B的时候,d = B - A, 那么x会有至少两种情况,一种是A - d,一种是B + d

此时需要考虑A和B中间数字个数cnt

cnt为偶数,则中间无法找出一个数字与A,B的差值相等,此时答案为2

cnt为奇数,中间会有一个数字x满足,此时d = x - A == B - x

代码(C++):

int main() {
    std::ios::sync_with_stdio(0);
    std::cin.tie(0);
    int a, b;
    std::cin >> a >> b;
    int res = -1;
    if (a == b) {
        res = 1;
    } else {
        int cnt = abs(a - b - 1);
        if (cnt % 2 == 0) {
            res = 2;
        } else {
            res = 3;
        }
    }
    std::cout << res << "\n";
}

代码(Python):

def main():
    a, b = map(int, input().split())
    res = -1
    if a == b:
        res = 1
    else:
        cnt = abs(a - b - 1)
        if cnt % 2 == 0:
            res = 2
        else:
            res = 3
    pri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值