정이면체군은 곱셈 연산 ∗가 정의된 집합 D이다. D의 원소는 모두 두 원소 a와 b로 만든다. 곱셈 기호는 거의 쓰지 않고 두 원소를 붙여 쓰거나 지수로 줄여 쓴다. 즉 a∗a는 aa 또는 a2으로 쓰고, a∗a∗b는 a2b1 또는 a2b로 쓴다.
정이면체군 D는 파라미터 m과 n을 받고, m≥2, n≥2이다. 이 군을 Dm,n으로 쓴다. Dm,n에서는 다음 세 관계가 성립한다.
am=a0=1,bn=b0=1,ba=am−1b
따라서 Dm,n의 원소는 모두 mn개다.
Dm,n={ajbk∣0≤j<m, 0≤k<n}={a0b0,a1b0,…,am−1b0,…,am−1bn−1}
m=7, n=2이면 D7,2는 다음 14개 원소로 이루어진다.
{a0b0,a1b0,a2b0,a3b0,a4b0,a5b0,a6b0,a0b1,a1b1,a2b1,a3b1,a4b1,a5b1,a6b1}
이 곱셈은 교환법칙이 성립하지 않아서 ba=ab이다. D7,2에서는 ba=a6b이다. 같은 문자의 거듭제곱은 ajak=a(j+k)modm, bjbk=b(j+k)modn으로 합쳐지지만, 두 문자가 섞이면 지수를 그냥 더할 수 없다.
(ajbk)(apbq)=a(j+p)modmb(k+q)modn
D7,2의 두 원소 a3b1과 a2b1을 올바르게 곱하는 과정은 다음과 같다. 먼저 가운데의 ba를 a6b로 바꾼다.
(a3b1)(a2b1)=(a3b0)(ba)(a1b1)=(a3b0)(a6b1)(a1b1)
a3a6=a(3+6)mod7=a2이므로 앞의 두 원소는 a2b1로 합쳐진다.
(a3b0)(a6b1)(a1b1)=(a2b1)(a1b1)
남은 곱도 같은 방법으로 정리한다.
(a2b1)(a1b1)=(a2b0)(ba)(a0b1)=(a2b0)(a6b1)(a0b1)=a8b2=a1b0
즉 (a3b1)(a2b1)=a1b0이다.
m과 n, 그리고 Dm,n의 두 원소 ajbk와 apbq가 주어졌을 때 곱한 결과를 구하는 프로그램을 작성하시오.