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

Tổng hợp hạt nhân

Đề bài

Mô tả

Trong một lò phản ứng có n nguyên tử của các nguyên tố hoá học. Số hiệu của một nguyên tử là số thứ tự của nguyên tố tương ứng trong bảng tuần hoàn.

Bạn được phép lấy hai nguyên tử phân biệt đang có trong lò và hợp nhất chúng thành một nguyên tử mới, có số hiệu bằng tổng số hiệu của hai nguyên tử ban đầu. Thao tác hợp nhất có thể thực hiện nhiều lần, trên cả những nguyên tử vừa được tạo ra.

Mục tiêu là từ n nguyên tử ban đầu thu được đúng k nguyên tử cho trước. Khó khăn nằm ở chỗ chỉ được hợp nhất chứ không được tách một nguyên tử thành nhiều nguyên tử. Nói cách khác, cần chia n nguyên tử ban đầu thành k nhóm không rỗng, nhóm thứ i có tổng số hiệu đúng bằng số hiệu của nguyên tử thứ i cần tạo ra.

Hãy xác định xem có thể làm được hay không, và nếu được thì chỉ ra một cách.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nk.
  • Dòng thứ hai chứa n ký hiệu nguyên tố, cách nhau bởi dấu cách: các nguyên tử có sẵn ban đầu.
  • Dòng thứ ba chứa k ký hiệu nguyên tố: các nguyên tử cần tổng hợp.

Các ký hiệu được viết đúng như trong bảng tuần hoàn. Có thể có nhiều nguyên tử thuộc cùng một nguyên tố.

Dữ liệu ra

Nếu không thể tổng hợp được, in ra NO.

Ngược lại, dòng đầu in ra YES, sau đó in k dòng mô tả cách tổng hợp từng nguyên tử dưới dạng phương trình:

x1+x2+...+xt->yi

trong đó xj là ký hiệu của một nguyên tử thuộc tập ban đầu và yi là ký hiệu của một nguyên tử thuộc tập cần tạo. Mỗi nguyên tử của tập ban đầu phải xuất hiện đúng một lần trong toàn bộ các phương trình, và mỗi nguyên tử của tập cần tạo phải xuất hiện đúng một lần ở vế phải. Một phương trình có thể chỉ gồm một số hạng.

Thứ tự các số hạng trong mỗi phương trình cũng như thứ tự các dòng là tuỳ ý. Nếu có nhiều đáp án, in ra một đáp án bất kỳ.

Ràng buộc

  • 1kn17
  • Số hiệu của mọi nguyên tử đều không vượt quá 100
  • Tổng số hiệu của n nguyên tử ban đầu bằng tổng số hiệu của k nguyên tử cần tạo

Bảng tuần hoàn 100 nguyên tố đầu tiên

H = 1 He = 2 Li = 3 Be = 4 B = 5 C = 6 N = 7 O = 8 F = 9 Ne = 10
Na = 11 Mg = 12 Al = 13 Si = 14 P = 15 S = 16 Cl = 17 Ar = 18 K = 19 Ca = 20
Sc = 21 Ti = 22 V = 23 Cr = 24 Mn = 25 Fe = 26 Co = 27 Ni = 28 Cu = 29 Zn = 30
Ga = 31 Ge = 32 As = 33 Se = 34 Br = 35 Kr = 36 Rb = 37 Sr = 38 Y = 39 Zr = 40
Nb = 41 Mo = 42 Tc = 43 Ru = 44 Rh = 45 Pd = 46 Ag = 47 Cd = 48 In = 49 Sn = 50
Sb = 51 Te = 52 I = 53 Xe = 54 Cs = 55 Ba = 56 La = 57 Ce = 58 Pr = 59 Nd = 60
Pm = 61 Sm = 62 Eu = 63 Gd = 64 Tb = 65 Dy = 66 Ho = 67 Er = 68 Tm = 69 Yb = 70
Lu = 71 Hf = 72 Ta = 73 W = 74 Re = 75 Os = 76 Ir = 77 Pt = 78 Au = 79 Hg = 80
Tl = 81 Pb = 82 Bi = 83 Po = 84 At = 85 Rn = 86 Fr = 87 Ra = 88 Ac = 89 Th = 90
Pa = 91 U = 92 Np = 93 Pu = 94 Am = 95 Cm = 96 Bk = 97 Cf = 98 Es = 99 Fm = 100

Ví dụ

Input Output Giải thích
10 3
Mn Co Li Mg C P F Zn Sc K
Sn Pt Y
YES
Mn+C+K->Sn
Co+Mg+F+Zn->Pt
Li+P+Sc->Y
Mn+C+K=25+6+19=50=Sn, Co+Mg+F+Zn=27+12+9+30=78=Pt, Li+P+Sc=3+15+21=39=Y. Các cách chia khác cũng được chấp nhận, chẳng hạn nhóm Co+Zn+Sc cho Pt và Li+Mg+P+F cho Y.
2 1
H H
He
YES
H+H->He
Hai nguyên tử H có số hiệu 1 hợp lại thành He có số hiệu 2.
2 2
Bk Fm
Cf Es
NO Tổng hai vế đều bằng 197, nhưng k=n=2 nên mỗi nhóm chỉ chứa đúng một nguyên tử, tức là hai tập phải trùng nhau. Ở đây {Bk,Fm}{Cf,Es} nên không thể.

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 csc 6.12.0.200 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 kotlinc 2.4.10 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 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 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0