D. [GESP 模拟三级] 变换原码

    传统题 1000ms 256MiB

[GESP 模拟三级] 变换原码

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目背景

小明在上课时学到了如何计算一个数的补码。

  • 正数的原码是其二进制形式,最高位为符号位(值为 0)。
  • 负数的原码是其对应正数的二进制形式,最高位为符号位(值为 1)。

反码

  • 正数的反码是其原码本身;
  • 负数的反码是:符号位不变,其余位取反。

补码

  • 正数的补码是其原码本身;
  • 负数的补码是其反码加 1。

举个例子:

  • 8 的原码:00001000

  • -8 的原码:10001000

  • 8 的反码:00001000

  • -8 的反码:11110111

  • 8 的补码:00001000

  • -8 的补码:11111000

题目描述

现在,老师给了小明一个 01数组(即只包含 0 和 1 的数组),这个数组表示一个二进制数(包含符号位)。数组第一位为符号位(0 表示正数,1 表示负数)。

小明的任务是将这个数组表示的数字转换为它的补码形式(仍然是 01 数组)。他觉得这个问题太简单了,决定交给你来完成。

输入格式

  • 第一行一个整数 nn,表示该二进制数的位数。
  • 第二行 nn 个整数,每个整数为 0011,表示从高位到低位的原码(包含符号位)。

输出格式

  • 输出一行 nn 个整数,从高位到低位,表示该二进制数的补码形式(仍为 01 数组形式)。
10
1 0 0 1 0 1 1 1 0 1
1 1 1 0 1 0 0 0 1 1

数据范围

  • 对于 100% 的数据,2n2000002 \leq n \leq 200000

GESP 三级模拟卷

未参加
状态
已结束
规则
IOI
题目
4
开始于
2026-3-9 19:00
结束于
2026-3-13 23:00
持续时间
100 小时
主持人
参赛人数
14