SICPゼミで前々からSchemeで競プロの問題を解いてみようみたいな話があったので暇つぶしにちょっとやってみた。

今回はABC036のA問題とB問題

abc036.contest.atcoder.jp

A問題

int二つとって割り算して切り上げてねみたいな問題。

Schemeはintで割り算すると分数とかいう斬新なものが返ってくる仕様なので先に割り切れるように調整してから割り算してやる。

入力は二つだけなので(read)を二つ書けばOK。

( define a ( read )) ( define b ( read )) ( define ( ans a b ) ( if ( = ( remainder b a ) 0 ) ( / b a ) ( + ( / ( - b ( remainder b a )) a ) 1 ))) ( display ( ans a b )) ( newline )

一応

( / ( + b ( - a ( remainder b a ))) a )

とかやれば分岐いらなさそうだけどまぁ誤差ということで。