Ước chung tốt

Đề bài

Mô tả

Cho một danh sách gồm n số nguyên dương a1,a2,,an. Danh sách được gọi là xấu nếu nó không rỗng và ước chung lớn nhất của tất cả các số trong danh sách bằng 1. Ngược lại, danh sách được gọi là tốt (tức là danh sách rỗng, hoặc ước chung lớn nhất của các số lớn hơn 1).

Bạn được phép thực hiện hai loại thao tác:

  • Chọn một số bất kỳ và xóa nó khỏi danh sách, với chi phí x.
  • Chọn một số bất kỳ và tăng giá trị của nó thêm 1, với chi phí y. Thao tác này có thể áp dụng nhiều lần lên cùng một số.

Hãy tìm tổng chi phí nhỏ nhất để biến danh sách thành danh sách tốt.

Dữ liệu vào

  • Dòng đầu chứa ba số nguyên n, x, y.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an.

Dữ liệu ra

  • In ra một số nguyên duy nhất: tổng chi phí nhỏ nhất để danh sách trở thành tốt.

Ràng buộc

  • 1n5·105
  • 1x,y109
  • 1ai106

Ví dụ

Input Output Giải thích
4 23 17
1 17 17 16
40 Xóa số 1 (chi phí 23) và tăng số 16 lên 17 (chi phí 17). Danh sách còn lại là 17,17,17 có ước chung lớn nhất bằng 17>1. Tổng chi phí 23+17=40.
10 6 2
100 49 71 73 66 96 8 60 41 63
10 Đưa mọi phần tử về bội của 2: chỉ cần tăng 4950, 7172, 7374, 4142, 6364, mỗi lần một đơn vị với chi phí 2, tổng 5×2=10.

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