1. 程式人生 > >2017廣工新生賽決賽 B 【模擬】

2017廣工新生賽決賽 B 【模擬】

spa 通過 turn 描述 namespace 定義 name 內部 但是

Problem B: 狗哥的肚子

Time Limit: 1 Sec Memory Limit: 128 MB

Description【http://gdutcode.sinaapp.com/problem.php?cid=1071&pid=1】

在 ACM 集訓隊中,狗哥的肚子形狀多變,令人嘖嘖稱奇,但是大家都有一個疑問,狗哥的肚子在最大的時候,能有多大呢?於是大家通過觀察測量,用三種近似形狀和相對應的整數數據來描述狗哥的肚子。
但是狗哥的肚子實在太多變化的形狀了,大家沒有辦法找出其中最大的值,於是請求你寫一個程序,來計算狗哥的肚子橫截面的最大面積。

Input

第一行是一個正整數T,代表有T組輸入。
每組輸入第一行是一個整數 N ,表示狗哥的肚子形狀變化個數。
接下來 N 行,每行開頭包括一個大寫字母,可能是 T (三角形)、 R (矩形) 、 C (圓形) ,表示狗哥肚子橫截面的形狀。
在字母後,是一到兩個整數,表示形狀的尺寸,也就是說T後會跟著兩個整數,分別代表著三角形的底和高,,R後會跟著兩個整數,代表著矩形的兩條鄰邊的長度,而 C 後會跟著一個整數,代表著半徑。
保證 N ≤ 1000 ,尺寸都在[0,100]之間,且定義 π = 3.14159。

Output

對於每一組樣例,輸出最大的狗哥的肚子橫截面積,結果請保留兩位小數。

Sample Input

2 1 T 3 2 4 T 3 2 R 2 1 C 5 C 10

Sample Output

3.00 314.16

HINT

第二個輸入,選擇 C 10 ,因為 10 × 10 × 3.14159 = 314.159(保留兩位小數) = 314.16 。

【代碼】:

技術分享圖片
#include <bits/stdc++.h>

using namespace std;
int t,n;
char a[5];
int d,h;
int c,k;
int r;
double
s; double ma=0; #define PI 3.14159 int main() { scanf("%d",&t); while(t--) { ma=0;//註意內部置位! scanf("%d",&n); while(n--) { scanf("%s",a); if(a[0]==T) { scanf("%d%d",&d,&h); s=(double)(d*h*1.0/2); } else if(a[0]==R) { scanf("%d%d",&c,&k); s=(double)(c*k*1.0); } else { scanf("%d",&r); s=(double)(PI*r*r*1.0); } ma=max(ma,s); } printf("%.2f\n",ma); } return 0; }
模擬

2017廣工新生賽決賽 B 【模擬】