Diederal qrup D, D çoxluğunda müəyyən olunmuş * vurma əməliyyatına malikdir. D çoxluğu a və b elementləri ilə yaradılır. Vurma əməliyyatı * açıq şəkildə yazılmayacaq, yəni a*a - aa və ya a^2 kimi göstəriləcəkdir. Eyni şəkildə a*a*b - a^2b^1 və ya sadəcə a^2b kimi yazılır.
Diederal qrupun D iki tam ədədi parametri var: m və n, burada m 2, n 2. Ona görə də, diederal qrupu D_m,n kimi yazılır. D_m,n-ni müəyyən edən əlaqələr:
a^m = a^0 = 1, b^n = b^0 = 1, və ba = a^{m-1}b.
Deməli, D_m,n-də mn element var:
D_m,n = { a^j b^k 0 j m, 0 k n } = { a^0b^0, a^1b^0, a^2b^0, , a^{m-1}b^0, , a^{m-1}b^{n-1} }.
Məsələn, m = 7, n = 2 olduqda, D_7,2 elementləri:
{ a^0b^0, a^1b^0, a^2b^0, a^3b^0, a^4b^0, a^5b^0, a^6b^0, a^0b^1, a^1b^1, a^2b^1, a^3b^1, a^4b^1, a^5b^1, a^6b^1 }.
Çarpma əməliyyatı kommutativ deyil, yəni ba \neq ab. Sözün əsl mənasında, ba = a^6b D_7,2-nin müəyyənedici əlaqələrinə əsasən. Həmçinin, a^ja^k = a^{(j+k) \% m}, b^jb^k = b^{(j+k) \% n}. Beləliklə,
(a^jb^k)(a^pb^q) \neq (a^{(j+p) \% m}b^{(k+q) \% n}).
D_7,2 qrupundan iki element (a^3b^1) və (a^2b^1) vurmaq üçün aşağıdakı kimi davam edirik:
(a^3b^1)(a^2b^1) = (a^3b^0)(ba)(a^1b^1) = (a^3b^0)(a^6b^1)(a^1b^1),
çünki ba = a^6b.
a^3b^0a^6 = a^3a^6 = a^{(3+6) \% 7} = a^2 olduğuna görə, ilk iki amili vuraraq (a^3b^0)(a^6b^1) = (a^2b^1) alınır.
Beləliklə,
(a^3b^0)(a^6b^1)(a^1b^1) = (a^2b^1)(a^1b^1).
İfadəni yenidən yazaq:
(a^2b^1)(a^1b^1) = (a^2b^0)(ba)(a^0b^1) = (a^2b^0)(a^6b^1)(a^0b^1) = (a^8b^2) = (a^1b^0).
Deməli, iki elementin vurulması (a^3b^1) və (a^2b^1) belə alınır: (a^3b^1)(a^2b^1) = (a^1b^0).
Sizdən tələb olunur ki, verilmiş m, n və D_m,n diederal qrupundan iki element (a^j b^k) və (a^p b^q) üçün düzgün vurmanı hesablaya bilən proqram yazasınız.
Giriş bir neçə testdən ibarətdir. Hər test bir neçə sətdən ibarətdir. Hər testin ilk sətri boşluqla ayrılmış problemID, m, n və p dəyərlərini ehtiva edir. m və n 1000-dən böyük deyil. p cari testdə vurmanın nümunələrinin sayını göstərir. Sonra p sətr gəlir, hər biri D_m,n-dən vurulması lazım olan iki elementi ehtiva edir. Hər element a3b1 şəklində veriləcək, a^3b^1 əvəzinə. Növbəti testin məlumatları əvvəlki testin dərhal ardınca gəlir. Əgər problemID "ZZ"-yə bərabərdirsə, bu, giriş məlumatlarının sonunu göstərir.
Hər vurma nümunəsi üçün aşağıdakı formada bir sətr çıxarın:
ProblemID id: ajbk * apbq = arbs
burada id girişdə verilmiş problemID-dir, ajbk və apbq vurulması lazım olan elementlərdir, arbs isə düzgün cavabdır.
Nümunə 1