本题题目很罗嗦,但是,其实是一道很简单的题目,主要就是求解一元方程的解就可以。(是叫一元方程吗?)
主要用到两个知识点:
1.求平方
#include<cmath>
double pow( double x, double y );
流程图:
还有一点要注意的是,精确度要去到1e-6
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main(){
int n, i, count = 1;
int month[13];
double input[13];
while(cin >> n && n != -1){
for(i = 0; i <= n; i++){
cin >> month[i] >> input[i];
}
double result;
double x1 = 1, x2 = 2;
while(x2 - x1 >= 1e-6){
result = 0;
double median = (x1 + x2)/2;
for(i = 0; i < n; i++){
result += input[i]*pow(median, month[n]-month[i]+1);
}
if(result < input[n]){
x1 = median;
} else {
x2 = median;
}
}
if(count > 1){
cout << endl;
}
cout << "Case " << count++ <<": " << fixed << setprecision(5) << x1 - 1 << endl;
}
return 0;
}