SRM559 Div1 Easy - HyperKnight
問題
サイズh*wのボードがある
今いるマスから(±a, ±b) or (±b, ±a)に移動できるハイパーナイトというコマがある
このコマのあるマスからの1手での移動先は最大8通りあり得るが、ボードからはみ出すような動きはできない
このコマが1手でk通りのマスに移動できるようなマスが何個あるか求めよ
1 <= a, b, x, y <= 10^9
0 <= k <= 8
解法
実験からのしょうもない場合分け
class HyperKnight { public: ll countCells(int A, int B, int X, int Y, int k) { ll a = A, b = B, x = X, y = Y; if (a<b) swap(a,b); if (x<y) swap(x,y); if (k==8) return (x-a*2)*(y-a*2); if (k==6) return (x+y-a*4)*(a-b)*2; if (k==4) return (x+y-a*4)*b*2 + (a-b)*(a-b)*4; if (k==3) return (a-b)*b*8; if (k==2) return b*b*4; return 0; } };
https://community.topcoder.com/stat?c=problem_statement&pm=12201&rd=15181