trang chủ / đề bài / chocequal

Chia đều sô cô la

Đề bài

Mô tả

Có hai thanh sô cô la hình chữ nhật, được chia thành các ô vuông đơn vị. Thanh thứ nhất có kích thước a1×b1 ô, thanh thứ hai có kích thước a2×b2 ô.

Ta muốn hai thanh có cùng số ô. Để làm điều đó, mỗi phút ta chọn một trong hai thanh và thực hiện đúng một trong hai thao tác sau:

  • Bẻ đôi: chọn một cạnh có độ dài chẵn, cắt thanh thành hai nửa bằng nhau theo cạnh đó rồi ăn một nửa. Cạnh được chọn giảm còn một nửa.
  • Cắt một phần ba: chọn một cạnh có độ dài chia hết cho 3, cắt đi đúng một phần ba thanh theo cạnh đó rồi ăn phần vừa cắt. Cạnh được chọn còn lại 23 độ dài ban đầu.

Nếu một thanh không có cạnh nào chẵn và cũng không có cạnh nào chia hết cho 3 thì không thể thao tác trên thanh đó nữa.

Hãy tìm số phút ít nhất để hai thanh có cùng số ô, đồng thời cho biết kích thước của hai thanh sau khi thực hiện.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên a1 và b1 là kích thước ban đầu của thanh thứ nhất.
  • Dòng thứ hai chứa hai số nguyên a2 và b2 là kích thước ban đầu của thanh thứ hai.

Dữ liệu ra

Nếu không thể làm cho hai thanh có cùng số ô, in ra một dòng duy nhất chứa −1.

Ngược lại, in ra ba dòng:

  • Dòng đầu chứa m là số phút ít nhất.
  • Dòng thứ hai chứa kích thước của thanh thứ nhất sau khi thực hiện.
  • Dòng thứ ba chứa kích thước của thanh thứ hai sau khi thực hiện.

Hai số trong mỗi dòng có thể in theo thứ tự bất kỳ. Nếu có nhiều đáp án, in ra bất kỳ đáp án nào.

Ràng buộc

  • 1≤a1,b1,a2,b2≤109

Ví dụ

Input Output Giải thích
2 6
2 3
1
1 6
2 3
Thanh thứ nhất có 12 ô, thanh thứ hai có 6 ô. Bẻ đôi thanh thứ nhất theo cạnh 2 ta được 1×6=6 ô, bằng thanh thứ hai. Bẻ đôi cạnh 6 để được 2×3 cũng tối ưu và cũng được chấp nhận.
36 5
10 16
3
16 5
5 16
Thanh thứ nhất cắt một phần ba hai lần theo cạnh 36: 36→24→16, còn 16×5=80 ô. Thanh thứ hai bẻ đôi cạnh 10, còn 5×16=80 ô. Tổng cộng 3 phút.
3 5
2 1
-1 Bỏ hết thừa số 2 và 3 khỏi 15 ta còn 5, còn bỏ khỏi 2 ta còn 1. Hai phần dư khác nhau nên số ô không bao giờ bằng nhau được.

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.402 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.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0