Ước chung lớn nhất của đa thức

Đề bài

Mô tả

Với hai đa thức A(x)B(x) (trong đó B(x) khác đa thức không), phép chia đa thức có dư cho ta biểu diễn duy nhất

A(x)=Q(x)·B(x)+R(x),degR<degB,

trong đó R(x) được gọi là phần dư của phép chia A(x) cho B(x).

Nhờ phép chia có dư, ta định nghĩa được thuật toán Euclid tìm ước chung lớn nhất của hai đa thức: với cặp (A,B), nếu B là đa thức không thì kết quả là A; ngược lại kết quả là giá trị thuật toán trả về cho cặp (B,R) với R là phần dư của A chia B. Mỗi lần chuyển từ cặp (A,B) sang cặp (B,R) được tính là một bước.

Cho số nguyên n. Hãy xây dựng hai đa thức thỏa mãn đồng thời:

  • Bậc của mỗi đa thức không vượt quá n.
  • Mọi hệ số đều là số nguyên có giá trị tuyệt đối không vượt quá 1, tức thuộc {1,0,1}.
  • Hệ số cao nhất (hệ số của lũy thừa lớn nhất) của mỗi đa thức bằng 1.
  • Bậc của đa thức thứ nhất lớn hơn bậc của đa thức thứ hai.
  • Thuật toán Euclid mô tả ở trên thực hiện đúng n bước với cặp đa thức này.

Dữ liệu vào

Một dòng duy nhất chứa số nguyên n: số bước cần đạt được.

Dữ liệu ra

In ra hai đa thức, mỗi đa thức gồm hai dòng:

  • Dòng thứ nhất chứa số nguyên m (0mn): bậc của đa thức.
  • Dòng thứ hai chứa m+1 số nguyên thuộc {1,0,1}: các hệ số theo thứ tự từ hệ số tự do đến hệ số cao nhất.

Đa thức thứ nhất in trước, đa thức thứ hai in sau. Nếu không tồn tại đáp án, in ra 1. Nếu có nhiều đáp án, in ra một đáp án bất kỳ.

Ràng buộc

  • 1n150

Ví dụ

Input Output Giải thích
1 1
0 1
0
1
Hai đa thức là x1. Dãy chuyển: (x,1)(1,0), đúng 1 bước.
2 2
1 0 1
1
0 1
Hai đa thức là x2+1x. Dãy chuyển: (x2+1,x)(x,1)(1,0), đúng 2 bước. Đáp án x21x cũng được chấp nhậ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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0