問題はこちら
No.48 ロボットの操縦 - yukicoder
まず、各方向の移動には、以前やったとおり、「距離÷1歩の長さ」の切り上げだけかかる
向きの変更には、Yが負なら必ず2回必要で、そうでないなら、まずY軸方向の移動を消化した後、X!=0なら横を向く必要がある
まとめるとこう
int main(){ int X,Y,L; scanf("%d%d%d",&X,&Y,&L); printf("%d",(abs(Y)+L-1)/L+(abs(X)+L-1)/L+(Y<0?2:!!X)); return 0; }
Cでは(-1)/2は0に丸められるので、前回とは違い、(abs(Y)+L-1)/Lを(abs(Y)-1)/L+1に書き換えることは出来ない
(Y=0,L≧2の時に困る)
最初から短いので大して変わらない
b,c; main(a){ scanf("%d%d%d",&b,&a,&c); b=!printf("%d",(abs(a)+c-1)/c+(abs(b)+c-1)/c+(a<0?2:!!b)); }
96B