AGC 024-A Fairness で新しい言語に挑戦してみる(Go)
irisruneです。今回はかなり軽めの記事です。
社内で今プログラミング言語始めるなら何がいいかという話題があり、 とりあえず調べてたらGo言語が割とおすすめに挙がっていたので試しに使ってみました。
https://atcoder.jp/contests/agc024/tasks/agc024_a
この問題、勘のいい人ならUnfairになるケースがないのでは?という察しが付くのではないでしょうか。
それどころか32bit整数で済んでしまう非常にあっさりした問題です。
嘘吐きました、は明らかに32bit整数では済まないですね。
前回の問題と配点逆なのではと思いましたがでも200点だと流石に難しいですね。
package main import "fmt" func main() { var a, b, c, k int fmt.Scan(&a, &b, &c, &k) if k % 2 == 0{ fmt.Println(a - b) }else{ fmt.Println(b - a) } }
Go言語についての話は後に回すとして、方針について軽く説明を。
解説のように3人のもつ値をとおけなくても、とおいて2回操作を行うと解答に辿り着けると思います。具体的にどうなるかというと、
- 0回目の操作後:答えはになる。
- 1回目の操作後:になるので答えはになる。
- 2回目の操作後:になるので答えはになる。
ここから単純にとの繰り返しになると結論付けてもいいです。もう少し厳密に考えると、 2回目の操作後はとなるわけですが、 これは結局初期状態と同じであると考えられます。
コードレビューは今回も見送ります。
Go言語を使った所感
- 公式ページで簡単にコードを試せるのはプログラミング初心者への導入としてはよいと思いました。
- さすがに競プロに使うなら(今回のコード程度でも)自前の環境を使うべきだと思います。
- 実行速度や関数の機能はC言語に近いものがある一方で変数の宣言がKotlinっぽかったりすると思いました。
- 今回のような簡単なコードだとC言語とそれほど見分けがつかないですね…
- (64bit環境なら)雑にintを使うだけで64bit整数になるのは楽だと思いました。
C言語を扱った経験があればかなり入りやすい言語だとは思いますが、 スクリプト言語しか(スクリプト言語も)触ったことがない人に向いているかはもう少し触ってみないと判断できないですね。
雑記
- テーマをデフォルトから差し替えてみましたが、コードを黒背景で表示する方法がわからなくて困っています。
- 次のRatedまでには500点問題には手が出るようにしたいですね。