6 12
3
一个找规律的题, 用三个坐标(行 左列 右列 例如12的坐标为423)把每个数的位置找出来,最短路程就是各个坐标差的绝对值的和。
#include<iostream> #include<cstdio> #include<cmath> using namespace std; int main() { int ans,a[4],b[4],n,m; while(cin>>n>>m) { a[1]=sqrt(n-1)+1;//行坐标 a[2]=(n-(a[1]-1)*(a[1]-1)+1)/2;//左列坐标 a[3]=(fabs(n-a[1]*a[1])+2)/2;//右列坐标 b[1]=sqrt(m-1)+1; b[2]=(m-(b[1]-1)*(b[1]-1)+1)/2; b[3]=(fabs(m-b[1]*b[1])+2)/2; /*cout<<a[1]<<a[2]<<a[3]<<endl; cout<<b[1]<<b[2]<<b[3]<<endl; */ ans=fabs(a[1]-b[1])+fabs(a[2]-b[2])+fabs(a[3]-b[3]); cout<<ans<<endl; } return 0; }
杭电 1030 Delta-wave,布布扣,bubuko.com
原文:http://blog.csdn.net/fanerxiaoqinnian/article/details/25540967