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 複雜...