每天一個小題目——噴水裝置
阿新 • • 發佈:2019-01-04
題目描述
小賽家有一塊草坪,長為20米,寬為2米,媽媽要他給草坪澆水,在草坪上放置半徑為Ri的噴水裝置,每個噴水裝置可以給以它為中心的半徑為實數Ri(1<Ri<15)的圓形區域澆水。他家有充足的噴水裝置i(1<i<600)個,並且一定能把草坪全部溼潤。你能幫他計算一下,把整個草坪全部溼潤,最少需要幾個噴水裝置。
輸入
輸入第一個數字為噴水裝置的個數n,後面n個數字分別為n個噴水裝置的半徑r,r表示該噴水裝置能覆蓋的圓的半徑。
噴水裝置i的範圍為:1<i<600,半徑的範圍為:1<Ri<15。
樣例輸入
5
2 3.2 4 4.5 6
輸出
輸出所用裝置的個數。
樣例輸出
2
程式碼如下:
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int n;
cin >> n;
float *p = new float[n]; // 半徑
float *d = new float[n]; // 有效覆蓋距離
int t = 0; // 個數
for (int i = 0; i < n; ++i){
cin >> p[i];
d[i] = 2 * sqrt(p[i] * p[i] - 1);
}
float temp;
for (int i = 0; i < n-1; ++i)
for (int j = i+1; j < n; ++j)
if (d[i] < d[j]){
temp = d[i];
d[i] = d[j];
d[j] = d[i];
}
float sum = 0.0 ; // 澆水有效距離
for (int i = 0; i < n; ++i){
++t;
sum += d[i];
// cout << d[i];
if (sum > 20)
break;
}
delete [] p;
delete [] d;
cout << t;
return 0;
}