AOJ2501
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2501
解法:商と余のマンハッタン距離を求める
計算量:O(N)
サンプルを見ればなんとなく分かるだろうか。
図が丁寧に書かれているのが分かりやすい。
但し入力の数字をそれぞれ-1しないと余りがw=4の時の出力が合わない。(それを注視したケースもある)
#include <iostream> #include <cmath> using namespace std; int main(){ int n,a,b,c,d,p,q,res=10000; cin >> n >> a >> b >> c >> d; a--;b--;c--;d--; for(int w=1;w<=n;w++){ p = abs(a/w-b/w) + abs(a%w-b%w); q = abs(c/w-d/w) + abs(c%w-d%w); //cout << p <<" " << q << endl;; res = min(res,p+q); } cout << res << endl; }