”藍橋杯“演算法大賽·入門演算法(2)
阿新 • • 發佈:2018-12-20
問題描述
給定圓的半徑r,求圓的面積。
參考程式碼
C++
#include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { double radius; cin >> radius; double area = acos(-1) * pow(radius, 2); cout << fixed << setprecision(7) << area << endl; return 0; }
Java
import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); double radius = scanner.nextDouble(); double area = Math.PI * Math.pow(radius, 2); System.out.printf("%1.7f", area); scanner.close(); } }
計算思想
圓的面積公式為。
Java有java.lang.Math(數學)包,內建圓周率常量(double java.lang.Math.PI)和乘方函式(double java.lang.Math.pow(double, double)),可以較精確地計算圓面積。輸出可以呼叫PrintStream java.io.PrintStream.printf(String format, Object... args)設定小數精度。
C++儘管有<cmath>可以呼叫乘方函式(constexpr __typeof__((0.0)) std::pow<double, int>(double __x, int __y)),但沒有準確的圓周率常量。藉助反餘弦函式(constexpr double std::acos<int>(int __x))和函式值