# Math# Geometry# Basic Calculation

b561 - 1.披薩大小

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算兩種披薩組合的總面積之絕對差值。輸入包含兩種披薩組合的個數和大小,需要計算它們的總面積差,並輸出到小數點後兩位。

解題思路

題目主要涉及圓面積的計算和絕對值的應用。對於每種披薩組合,首先讀取披薩的個數,然後讀取每個披薩的大小(直徑)。根據直徑計算出每個披薩的半徑,再利用圓面積公式 (π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";
	}
}

Discussion