洛谷[P4326]Herman

题目传送门OvO


题目描述

19世纪的德国数学家赫尔曼·闵可夫斯基(Hermann Minkowski)研究了一种名为出租车几何学的非欧几何。 在出租车几何里 T 1 ( x 1 , y 1 ) T_1(x_1,y_1) T1(x1,y1) T 2 ( x 2 , y 2 ) T_2(x_2,y_2) T2(x2,y2)两点之间的距离被定义为 d i s ( T 1 , T 2 ) = ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ dis(T_1,T_2)=|x_1-x_2|+|y_1-y_2| dis(T1,T2)=x1x2+y1y2(曼哈顿距离)。 其他定义均与欧几里得几何相同。
例如圆的定义:在同一平面内,到定点(圆心)的距离等于定长(半径)的点的集合。

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

输入输出格式

输入格式

仅有一行为圆的半径R。 (R≤10000)

输出格式

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

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


(COCI是Crotian Open Competition in Informatics, 即克罗地亚信息学公开赛)
(然后看到这道题大佬用了积分······实在看不下去)
这道题关键就是理解“出租车几何”中的圆的半径应该怎么计算。 首先,在欧几里得的几何中
S = π r 2 S=πr^2 S=πr2
它的原理其实是积分的思想,(但这是小学生都知道的) 待会直接可以在代码中算
另一方面,对于出租车几何,因为 d i s ( T 1 , T 2 ) = ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ dis(T1,T2)=|x1-x2|+|y1-y2| dis(T1,T2)=x1x2+y1y2
有别于一般的 d i s ( T 1 , T 2 ) = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 dis(T1,T2)=\sqrt{(x1-x2)^2+(y1-y2)^2} dis(T1,T2)=(x1x2)2+(y1y2)2
所以这个时候我们就要分析一下这个所谓的“圆”的形状。实际上,它长这样···
洛谷[P4326]Herman_第1张图片

难以置信!是一个“正方形”!
所以它的面积也很明确:当边长半径为n时,它就是两个底为2n,高为n的三角形拼合起来。因为沿着格点的线段长度定义不变,角度定义也不变,所以此时,三角形面积公式不变。因此我们得到这个世界下的圆面积公式:

S = ( 2 n × n ÷ 2 ) × 2 = n × n × 2 S=(2n×n÷2)×2=n×n×2 S=(2n×n÷2)×2=n×n×2
同样带入代码中:

#include
#include

const double pi=3.14159265358979323;//定义π
double n;

int main()
{
    scanf("%lf",&n);//输入
    printf("%.6lf\n%.6lf",n*n*pi,n*n*2);//依照上面的面积公式输出
    return 0; //A perfect end!
}

你可能感兴趣的:(题解)