标签:
Problem Description:
#include<stdio.h> #include<math.h> int main () { int m, n, mx, nx, mly, nly, mry, nry, ans, t; while(scanf("%d%d", &m, &n) != EOF) { if (m > n) { t = m; m = n; n = t; } mx = (int)sqrt(m); ///计算行(横坐标) nx = (int)sqrt(n); if (mx * mx < m) mx++; if (nx * nx < n) nx++; mly = (m-(mx-1)*(mx-1)+1)/2; nly = (n-(nx-1)*(nx-1)+1)/2; ///计算从左边起的列(纵坐标) mry = (mx*mx-m)/2+1; nry = (nx*nx-n)/2+1; ///计算从右边起的列 ans = fabs(mx-nx) + fabs(mly-nly) + fabs(mry-nry); ///两个点之间的最短距离就是横坐标绝对值和纵坐标绝对值之和 printf("%d\n", ans); } return 0; }
标签:
原文地址:http://www.cnblogs.com/syhandll/p/4790179.html