洛谷P4326 [COCI2006-2007#1] Herman

洛谷P4326 [COCI2006-2007#1] Herman

{
题意翻译
19世纪的德国数学家赫尔曼·闵可夫斯基(Hermann Minkowski)研究了一种名为出租车几何学的非欧几何。 在出租车几何里T1(x1,y1) T2(x2,y2)两点之间的距离被定义为dis(T1,T2 )=∣x1−x2∣+∣y1−y2∣(曼哈顿距离)。 其他定义均与欧几里得几何相同。
例如圆的定义:在同一平面内,到定点(圆心)的距离等于定长(半径)的点的集合。

我们对欧几里得几何与出租车几何两种定义下半径为RR的圆的面积很感兴趣。解决这个问题的重担就落在你身上了。

输入输出格式
输入格式
仅有一行为圆的半径RR。(R≤10000)

输出格式
第一行输出欧几里得几何下半径为R的圆的面积,第二行输出出租车几何下半径为R的圆的面积。

注意:你的输出与标准答案绝对误差不超过0.0001将会被认为正确

题目描述
The 19th century German mathematician Hermann Minkowski investigated a non-Euclidian geometry, called the taxicab geometry. In taxicab geometry the distance between two points T1(x1, y1) and T2(x2, y2) is defined as: D(T1,T2) = |x1 - x2| + |y1 - y2| All other definitions are the same as in Euclidian geometry, including that of a circle: A circle is the set of all points in a plane at a fixed distance (the radius) from a fixed point (the centre of the circle). We are interested in the difference of the areas of two circles with radius R, one of which is in normal (Euclidian) geometry, and the other in taxicab geometry. The burden of solving this difficult problem has fallen onto you.

输入格式
The first and only line of input will contain the radius R, an integer smaller than or equal to 10000.

输出格式
On the first line you should output the area of a circle with radius R in normal (Euclidian) geometry. On the second line you should output the area of a circle with radius R in taxicab geometry. Note: Outputs within ±0.0001 of the official solution will be accepted.

输入输出样例
输入 #1
1
输出 #1
3.141593
2.000000

输入 #2
21
输出 #2
1385.442360
882.000000

输入 #3
42
输出 #3
5541.769441
3528.000000
}

拿到这道题,看到题意与输入格式,首先我们必须要弄清楚什么是欧几里得几何下的圆的面积,什么又是出租车几何半径下的圆的面积,这也是本题唯一的难点所在。欧几里得几何下的圆的面积很好理解,通过样例也可以知道,就是我们在生活中、数学里所运用的求圆的面积的方法,也就是S=半径的平方再乘以π;而出租车几何半径下的圆的面积其实就是在二维的坐标系中就是一个正方形,而此时我们所定义的半径就是这个正方形对角线的一半,那么几何原理可知,这时候这个正方形(也就是这个圆)的面积就是半径的平方再乘以2了。(其实如果实在搞不懂两者的原理的话,可以通过对样例输出的推敲来找到规律,也是可以做题的)弄清楚这些逻辑问题,代码的实现其实是十分简单的。下面附上本人代码:

#include <bits/stdc++.h>
using namespace std;

double pai=3.1415926535897;//取π的时候小数点后的位数不妨多取一些,防止误差

int main()
{
double r;//浮点型的运算不能用int
cin>>r;
printf("%.6f\n",pairr);//输出欧几里得下的圆的面积,注意取六位小数
printf("%.6f\n",2rr);//输出出租车几何下的圆的面积,注意取六位小数
return 0;
}

完工!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值