読者です 読者をやめる 読者になる 読者になる

メモ

yukicoderで遊んでいる競プロゆるふわ勢

yukicoder No.48 ロボットの操縦

問題はこちら
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