CF1838A-Blackboard-List

题意简述

在黑板上有两个数字,进行如下操作 n2 次:

  • 每次在黑板上选择任意两个数,将两个数的差的绝对值写在黑板上。

这样你会得到一个长度为 n(3n100) 的序列。

一共 t(1t100) 组数据。

每组数据给定操作后的序列,需要你还原出最初写在黑板上的两个数。

虽然可能有多个答案,不过,你只需要输出其中任意一个可能中的一个数即可。

题解

简单题,分类讨论即可:

  • 存在负数:由于后面写下的都是差的绝对值,不可能凑出负数,所以负数一定是最初的两个数之一。
  • 不存在负数:很明显,两个正数的差的绝对值一定小于大的数的绝对值。也就是 a>b>0|ab|=ab<a。所以最大的那个数一定是最初的两个数之一。

于是代码就很好写了:

#include <iostream>

using namespace std;

void work(void) {
    int n; cin >> n;

    int mx = -0x7FFFFFFF, mn = 0x7FFFFFFF;
    for (int x, i = 0; i < n; ++i) {
        cin >> x;
        if (x > mx) mx = x;
        if (x < mn) mn = x;
    }

    cout << (mn < 0 ? mn : mx) << '\n';
}

int main(void) {
    cin.tie(0)->sync_with_stdio(false);

    int T; cin >> T;
    while (T--) work();
}
posted @   jeefy  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示