这题很水,找规律就能过...
1。先考虑如果m,n至少有一个是偶数,根据对称性,答案就是对角线长的一半2。然后m,n都是奇数的情况,画一下3X5,3X7的看一下,规律一眼就看出来了...- - 先同除以最大公约数,然后根据刚刚找到的规律(假设m>n,根据三角形相似,答案与对角线的比例=n/m+(n-2)/m+..+3/m+1/m+1/m+3/m+...+(n-2)/m+n/m,如果不足 (m+n)/2项的话,差多少个就加多少个n/m补足)可以推出答案是对角线长度(m*n+1)/(2*m*n)倍 View Code
1 #include2 #include 3 #include 4 long long gcd(long long x,long long y) 5 { 6 long r; 7 r=x%y; 8 while(r!=0) 9 { 10 x=y; 11 y=r; 12 r=x%y; 13 } 14 return y; 15 } 16 int main() 17 { 18 long long n,m,g,num,temp; 19 double ans; 20 while(scanf("%lld%lld",&n,&m)!=EOF) 21 { 22 //if(m==n){ans=sqrt(m*m+n*n);printf("%.3lf\n",ans);continue;} 23 if(n%2==0||m%2==0){ans=sqrt(m*m+n*n)/2;printf("%.3lf\n",ans);continue;} 24 if(m