HDU 2199 牛頓迭代

2021-07-05 01:33:07 字數 1268 閱讀 1435

hdu 2199

題意:求乙個給定高次方程的根。

思路:練習牛頓迭代。至於為什麼要遍歷所有整數點來取根暫且不知,精度的取法和退出方式好像也有講究。

原始碼:#include 

#include 

#include 

#include 

#include 

#include 

#include 

using namespace std;

const double eps = 1e-6;

double newton_iterative(double a, double b, double c, double d, double e, double x0)

int cnt = 0;

double x = x0;

while(1){

x0 = x;

long double f1 = ((((a * x + b) * x + c) * x + d) * x + e);

long double f2 = (((4 * a * x + 3 * b) * x + 2 * c) * x + d);

x = x0 - f1 / f2;

cnt++;

if(fabs(f1) < eps)

break;

if( cnt > 50)

return -1;

return x;

int main()

double a, b, c, d, e;

a = 8, b = 7, c = 2, d = 3;

int t;

scanf("%d", &t);

while(t--){

double lv;

scanf("%lf", &lv);

e = 6 - lv;

int ok = 0;

double u = 0;

double x;

for(u = 0.0 ; u < 100.0 ; u++){

x = newton_iterative(a, b, c, d, e, u);

if(x >= 0 && x <= 100){

//              printf("u = %f\n", u);

ok = 1;

break;

if(ok)

printf("%.4f\n", x);

else

printf("no solution!\n");

return 0;

HDU 2199 多重揹包轉化為01揹包

現在假設你一共有資金n元,而市場有m種大公尺,每種大公尺都是袋裝產品,其 不等,並且只能整袋購買。請問 你用有限的資金最多能採購多少公斤糧食呢?輸入資料首先包含乙個正整數c,表示有c組測試用例,每組測試用例的第一行是兩個整數n和m 1 n 100,1 m 100 分別表示經費的金額和大公尺的種類,然...

牛頓迭代 牛頓下山

2009 11 18 16 59 51 分類 計算方法數學類 字型大小 訂閱 牛頓迭代法,牛頓下山迭代 include include float newtonfun float x0,float c float xiashanfun float x0,float c float fun1 floa...

重聚 牛頓迭代

給出n和p,求最小的正整數x使得x p q 有斯特林公式n 2 n n e n 取個log得log n 0.5 log 2 pi n 0.5 log n n 然後log p q q log p 不過二分是過不去的 這個函式可以牛頓迭代,就是對於乙個x,在函式上做切線,與x軸的交點作為下一次的x 複雜...