Codeforces 515 A :Drazil and Date
問題リンク : Problem - 515A - Codeforces
問題概要 :
(x,y)にいる人は(x-1,y) (x,y-1) (x+1,y) (x,y+1) のいずれかに移動できる
初期位置は(0,0)で目的地(a,b)にs回の移動で到達できるか
解法 :
最短で移動してもs回で目的地に到達すらできないならダメ
目的地到達後、どの方向でも良いので1回移動して目的地に戻ってを繰り返し調整可能かどうかで判定
コメント :
intだとオーバーフローするらしい
Int64を使用したらRuntime errorがとれた
まだocamlわからない
コード :
open Scanf;; open Printf;; let solve (a,b,s) = if ( Int64.add ( Int64.abs a ) ( Int64.abs b ) ) > s then "No" else if ( Int64.rem ( Int64.sub ( Int64.add ( Int64.abs a ) ( Int64.abs b ) ) s) 2L ) = 0L then "Yes" else "No" ;; printf "%s\n" ( let (a,b,s) = scanf " %Ld %Ld %Ld\n" ( fun a b s -> (a,b,s) ) in solve (a,b,s) ) ;;