My birthday is coming up and traditionally I'm serving pie. Not just one pie, no, I have a number N of them, of various tastes and of various sizes. F of my friends are coming to my party and each of them gets a piece of pie. This should be one piece of one pie, not several small pieces since that looks messy. This piece can be one whole pie though.
One line with a positive integer: the number of test cases. Then for each test case:
For each test case, output one line with the largest possible volume V such that me and my friends can all get a pie piece of size V. The answer should be given as a floating point number with an absolute error of at most 10^(-3).
3 3 3 4 3 3 1 24 5 10 5 1 4 2 3 4 5 6 5 4 2
25.1327 3.1416 50.2655
代碼如下:
#include#include #include #define Pi asin(1.0); //相當於π/2 using namespace std; int main() { int T; int i, n, m, a, sum; double str[10010]; cin>>T; while (T--) { double temp = 0; cin>>n>>m; for ( i = 1; i <= n; i++) { cin>>a; str[i] = a*a * 2 * Pi; //求餅的面積 temp += str[i]; //將所有餅的面積累加 } double low = 0, high = temp / (m + 1); //m+1包括作者自己 double mid; while (high - low > 1e-6) //二分法查找 { sum = 0; mid = (low + high) / 2; for (i = 1 ; i <= n; i++) sum += (int)(str[i] / mid); if (sum >= m + 1) low = mid; else high = mid; } //由於要求所有人一樣且不能是兩塊拼接在一起的,找到那個最合適的平均面積 cout<
運行結果:
終於回到學校了,移動的網最近不知道為何進不了CSDN,現在終於進來了,把沒發完的一套題繼續更新