poniedziałek, 4 grudnia 2017

00018 - 609 - Pole pewnego koła - www.pl.spoj.com

Treść zadania:
Wyznacz pole koła, którego okrąg jest przecięciem dwóch identycznych sfer o promieniu r. Odległość pomiędzy środkami sfer wynosi d. Wartości r oraz d podane na wejściu są liczbami zmiennoprzecinkowymi. Można założyć, że 1 <= d < 2 * r <= 2000.














Wejście
Na wejściu podane są dwie liczby zmiennoprzecinkowe r d oddzielone spacją, oznaczające odpowiednio promień sfery i odległość między środkami sfer.

Wyjście
Należy wypisać pojedynczą liczbę zmiennoprzecinkową S oznaczającą pole koła. Dopuszczalny błąd wyniku wynosi 0.01.

Uwaga. W roli separatora dziesiętnego należy używać kropki (nie: przecinka). Można przyjąć, że stosunek obwodu koła do jego średnicy wynosi 3.141592654.

Liczba punktów za zadanie jest równa liczbie poprawnie rozwiązanych testów / 5. Testów jest 20.

Przykład

Przykład 1

Wejście:
10 10

Wyjście:
235.62

Przykład 2

Wejście:
1000 1500

Wyjście:
1374446.79


Kod źródłowy w C:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define M_PI 3.141592654

int main()
{
    double r, d;
    for(;scanf("%lf%lf",&r,&d)!=EOF;)
    {
        d=d/2;
        printf("%.2lf\n",M_PI*(sqrt((r*r)-(d*d)))*(sqrt((r*r)-(d*d))));
    }
    return 0;
}


Kod źródłowy w C++:
#include <iostream>
#include <math.h>

using namespace std;

int main()
{
    double r, d;
    cout.setf(ios::fixed);
    cout.precision(2);
    for(;cin>>r>>d;)
    {
        d=d/2;
        cout<<M_PI*(sqrt((r*r)-(d*d)))*(sqrt((r*r)-(d*d)))<<endl;
    }
    return 0;
}


Kod źródłowy w Python 2:
import math
input_data = raw_input('')
if input_data == '':
    exit(0)
list = input_data.split(' ')
output = a = b = r_n = 0.000000000
pi = 3.141592654
a = float(list[0])
b = float(list[1])/2
if float(list[1]) >= 2*a:
    output = 0.00
elif float(list[1]) == 0:
    output = pi * a * a
else:
    r_n = math.sqrt((a * a) - (b * b))
    output = pi * r_n * r_n
print output
exit(0)


Kod źródłowy w Python 3:
import math
input_data = input('')
if input_data == '':
    exit(0)
list = input_data.split(' ')
output = a = b = r_n = 0.000000000
pi = 3.141592654
a = float(list[0])
b = float(list[1])/2
if float(list[1]) >= 2*a:
    output = 0.00
elif float(list[1]) == 0:
    output = pi * a * a
else:
    r_n = math.sqrt((a * a) - (b * b))
    output = pi * r_n * r_n
print (output)
exit(0)


Źródło: http://pl.spoj.com/problems/ETI06F1/

Brak komentarzy:

Prześlij komentarz