結果

問題 No.3225 2×2行列相似判定 〜easy〜
コンテスト
ユーザー ID 21712
提出日時 2026-05-02 17:19:45
言語 Go
(1.26.1)
コンパイル:
env GOCACHE=/tmp go build _filename_
実行:
./Main
結果
AC  
実行時間 979 ms / 2,000 ms
コード長 768 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 14,760 ms
コンパイル使用メモリ 286,056 KB
実行使用メモリ 6,400 KB
最終ジャッジ日時 2026-05-02 17:20:12
合計ジャッジ時間 25,945 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 33
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

package main

import . "fmt"

type Mat struct {
	a,b int
	c,d int
}

func (m1 *Mat) MulMat(m2 *Mat, k int) *Mat {
	return &Mat{
		a: ((m1.a*m2.a)%k + (m1.b*m2.c)%k)%k,
		b: ((m1.a*m2.b)%k + (m1.b*m2.d)%k)%k,
		c: ((m1.c*m2.a)%k + (m1.d*m2.c)%k)%k,
		d: ((m1.c*m2.b)%k + (m1.d*m2.d)%k)%k,
	}
}

func (m1 *Mat) Eq(m2 *Mat) bool {
	return m1.a==m2.a&&m1.b==m2.b&&m1.c==m2.c&&m1.d==m2.d
}

const p = 67

func main() {
	var A,B Mat
	Scan(&A.a,&A.b,&A.c,&A.d,&B.a,&B.b,&B.c,&B.d)
	
	for a:=0; a < p; a++ {
		for b:=0; b<p; b++ {
			for c:=0; c<p; c++ {
				for d:=0; d<p; d++ {
					if (a*d-b*c)%p == 0 {
						continue
					}
					P := &Mat{ a, b, c, d }
					if P.MulMat(&A,p).Eq(B.MulMat(P,p)) {
						Println("Yes")
						return
					}
				}
			}
		}
	}
	Println("No")
}
0