1. 程式人生 > >藍橋杯第五屆校內選拔賽2 3【浮點數操作】

藍橋杯第五屆校內選拔賽2 3【浮點數操作】

1/1 + 1/2 + 1/3 + 1/4 + … 在數學上稱為調和級數。

它是發散的,也就是說,只要加上足夠多的項,就可以得到任意大的數字。

但是,它發散的很慢:

前1項和達到 1.0
前4項和才超過 2.0
前83項的和才超過 5.0

那麼,請你計算一下,要加多少項,才能使得和達到或超過 15.0 呢?

請填寫這個整數。

注意:只需要填寫一個整數,不要填寫任何多餘的內容。比如說明文字。

開始 INF 定義為1E-5導致結果不對,應該精度更高。

#include<iostream>
using namespace std;
#define INF 1e-10
#include<stdio.h>   
int main() { double n=0; long i=1; for(i = 1;(n-15.0)<=INF;i++)// for(i = 1;n<=15.0;i++)也可以 { n+=1.0/i; } i--; cout<<i<<endl; return 0; }

如果x的x次冪結果為10(參見【圖1.png】),你能計算出x的近似值嗎?

顯然,這個值是介於2和3之間的一個數字。

請把x的值計算到小數後6位(四捨五入),並填寫這個小數值。

注意:只填寫一個小數,不要寫任何多餘的符號或說明。

答案是2.506184

這裡寫圖片描述

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
#define INF 1E-20
int main()
{
    double i,result = 0;
    for(i = 2.0000001;(result-10)<=INF;i = i+0.0000001)
    {
        result = pow(i,i);
    }
    printf("%.6f",i);
    return 0;
}