trang chủ / bài tập / shortprog

Chương trình rút gọn

Đề bài

Mô tả

Cho một chương trình gồm n dòng thao tác trên một số nguyên không âm x trong khoảng [0,1023]. Mỗi dòng là một trong ba phép toán bit, ký hiệu bởi một ký tự rồi đến một hằng số y (0y1023):

  • & y — gán xx AND y
  • | y — gán xx OR y
  • ^ y — gán xx XOR y

Các thao tác được áp dụng tuần tự theo thứ tự đã cho.

Hãy viết một chương trình mớikhông quá 5 dòng (cùng định dạng) sao cho với mọi x[0,1023], kết quả cuối cùng trùng với chương trình ban đầu.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — số dòng của chương trình gốc.
  • n dòng tiếp theo, mỗi dòng có dạng op y với op là một trong các ký tự &, |, ^0y1023.

Dữ liệu ra

  • Dòng đầu in số nguyên k (0k5) — số dòng của chương trình tương đương.
  • k dòng tiếp theo, mỗi dòng là một thao tác cùng định dạng.

Mọi chương trình hợp lệ tương đương với chương trình gốc đều được chấp nhận.

Ràng buộc

  • 1n5·105
  • 0y1023 với mỗi hằng số trong chương trình gốc.

Ví dụ

Input Output Giải thích
3
& 1
& 3
& 5
1
& 1
((x&1)&3)&5=x&(1&3&5)=x&1, nên một dòng duy nhất là đủ.
3
^ 1
^ 2
^ 3
0 123=0, chương trình gốc không làm thay đổi x, nên chương trình rỗng tương đương.
1
^ 1023
1
^ 1023
Một phép XOR đơn lẻ đã ngắn, không thể rút gọn hơn.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.400 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0