【数论】教堂

来源:互联网 发布:dojo 加载js 编辑:程序博客网 时间:2024/04/29 04:46

 A: 【数论】教堂

时间限制: 1 Sec  内存限制: 128 MB
提交: 45  解决: 15
[提交][状态][讨论版]

题目描述

ROMA城中有一些古典的印度式建筑,这些建筑和周围的欧洲建筑风格格格不入。这些伪装成教堂的建筑其实是某国特工的基地。Tomas接受了一项任务,就是从某个教堂出发,逐个访问这些教堂,搞清楚每一个教堂的内部结构,并回到出发的地方。这些教堂很有规律地构成了一个m*n的矩形,每个教堂和它的八个方向的教堂有直接的路径相连。水平或垂直方向相邻的教堂之间的路程均为1。请问Tomas至少需要走多远的路,才能完成这个危险而艰巨的任务呢?

输入

输入一行两个整数m和n(m,n≤10000)

输出

输出一行一个实数,表示最少需要走的路程,保留两位小数。

样例输入

2 3

样例输出

6.00

提示


不知道是不是数论,就找了一下规律,第一次只看了奇偶,wa,又想到1这种特例,就加了个,ac,不知道是不是水过的

ac代码

#include <cstdio>#include <iostream>#include <cmath>#include <algorithm>#include <cstring>#include <string>using namespace std;const double g2=sqrt(2);int n,m;double ans;int main(){while(~scanf("%d%d",&n,&m)){ans=0.0;if(n==1 || m==1){printf("%.2lf\n",ans+(max(m,n)-1)*2);continue ;} if(n %2==0 || m%2==0)printf("%.2lf\n",ans+m*n);else{printf("%.2lf\n",ans+g2+m*n-1);}}return 0;}




原创粉丝点击