先週のあらすじ
学習内容が学習内容なだけに実質競プロ入門メモのようになってきた。それはそれとして何この法則オモロというものが多いので以外と続いている。
Week8(2か月目)までにはAランクメニューを攻略したいがAWSの勉強を放置しているのも良くないのでバランスよくやっていきたい。
今週の学習内容
1. ユークリッドの互除法
学生時代にやったようなやっていないような。多分やってるやり方。
$a = bq+r$なら$a$と$b$の最大公約数が$b$と$r$の最大公約数とイコールになる法則で、$a \div b$を計算し、余りとして出た$r$を使って余りが0になるまで割り算を続けることで最大公約数を計算できる。
$r_n$...余り、 $q_n$...商
\displaylines{
a = bq_1+r_1 \\
b = r_1q_2+r_2 \\
r_1 = r_2q_3+r_3 \\
....
}
main.go
func saidaiKoyakusu(a, b int) int {
for b != 0 {
a, b = b, a % b // aをbに、bをa % bに置き換え
}
return a // bが0になった時、aが最大公約数
}
今週のまとめ
業務命令の出た資格勉強をしてたり、競プロになれるため、ひたすら問題を解いてたら全然書く内容がなかった。
まあこの記事自体は私が学んだことをアウトプットして脳に定着させるための自分用記事なので、気にしないことにする。多分Aランクチャレンジ→敗北を繰り返すまでそんな書くこともないような気がする。ほぼ成果報告週が続く見込み。
来週もひたすらBランクを解き続けて考える力を育てていきたい。