b561 - 1.披薩大小
題目描述
題目要求計算兩種披薩組合的總面積之絕對差值。輸入包含兩種披薩組合的個數和大小,需要計算它們的總面積差,並輸出到小數點後兩位。
解題思路
題目主要涉及圓面積的計算和絕對值的應用。對於每種披薩組合,首先讀取披薩的個數,然後讀取每個披薩的大小(直徑)。根據直徑計算出每個披薩的半徑,再利用圓面積公式 (πr^2) 計算每個披薩的面積。將所有披薩的面積加總,得到該組合的總面積。最後,計算兩種披薩組合總面積的絕對差值,並輸出結果。
複雜度分析
- 時間複雜度: O(N+M),其中 N 和 M 分別是兩種披薩組合的披薩個數。因為需要遍歷兩種披薩組合的所有披薩來計算總面積。
- 空間複雜度: O(1),因為只使用了常數級別的額外空間來存儲變數。
程式碼
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
int a,b;
while(cin >> a){
double aa,bb,aall=0,ball=0;
while(a--){
cin >> aa;
aa/=2;
aa*=aa*3.14159;
aall+=aa;
}
cin >> b;
while(b--){
cin >> bb;
bb/=2;
bb*=bb*3.14159;
ball+=bb;
}
aall-=ball;
if(aall<0)aall*=-1;
cout << fixed << setprecision(2) << aall << "\n";
}
}