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