计算方法 - 求近似值

计算方法 - 求近似值

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
#define ll long long
const double m = 1e8;
const double esp = 0.5e-3;

double i1[20] = {0.0}, i2[20] = {0.0};

double f(double x) {
    double t = 1.0;
    while(abs(x) < m) {
        x *= 10;
        t *= 10;
    }
    int a = (int)x;
    if( (abs(a) % 10) >= 5) {
        if(a > 0) a += 10;
        else if(a < 0) a -= 10;
    }
    a /= 10; t /= 10;
    x = (double)a / t;
    return x;
}

double I1(int n) {
    if(n == 0) {
        i1[0] = 0.63212056;
        return i1[0];
    }
    i1[n] = f(1 - n * I1(n-1));
    return i1[n];
}

double I2(int n) {
    if(n == 14) {
        i2[14] = 0.05;
        return i2[14];
    }
    i2[n]  = (1 - I2(n+1)) / (n+1);
    return i2[n];
}

int main() {
    int n;
    cin >> n;
    I1(14);
    I2(0);
    if(n == 1)
    for(int i = 1; i <= 14; ++i) {
        printf("%d, %.8lf\n",i,i1[i]);
    }
    if(n == 2)
    for(int i = 13; i >= 0; --i) {
        printf("%d, %.8lf\n",i,i2[i]);
    }
}


上一篇:Python之Ajax


下一篇:结对测试算法性能优化(代码层面)