实在做不出来,题目很简洁,大神求围观!
x+x^2+x^3+x^4+x^5+x^6+x^7+x^8+x^9+x^10+x^11+x^12=97.8
求x的值。
给出我考虑的两种做法:
1.等比数列,Sn=[a1*(1-q^n)]/(1-q) 带入得 r*(1-r^12)/1-r=97.8
2.确定x值得范围,依次缩小,二分法,速率也算比较快,就不知道可行不? 比ACM简单的多? A不出来 算法
[解决办法]
等比求和公式
(1-x^(n+1))/(1-x)
(1-x^(12+1))/(1-x) - 1 = 97.8
(1-x^13)/(1-x) = 98.8
x不等于1的时候
1-x^13 = 98.8-98.8x
97.8-98.8x+x^13=0;
这个二分法吧
#include<iostream>
#include<stdlib.h>
#include<math.h>
using namespace std;
// 98.8x-x^13=97.8
int main(){
double min=-100;
double max=100;
double center = (min+max)/2;
double result=0;
while(fabs(result - 97.8)>1e-6){
if( (result = (98.8*center - pow(center,13.0))) < 97.8){
max = center;
center = (min+max)/2;
}
else
{
min = center;
center = (min+max)/2;
}
}
cout<<center<<endl;
//验算结果
double x = -1.52862;
double sum =0;
for(int i=1;i<13;i++){
sum+= pow(x,i);
}
cout<<sum;
}
w233052085
感谢二楼给出实现的二分法,得出的结果与理论结果相差甚微,基本上可以了,就是不知道会不会是有多个根,我觉得应该不止一个解吧?
一个正根一个负根其他都是复根