蓝桥杯第五届校内选拔赛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;
}

猜你喜欢

转载自blog.csdn.net/weixin_38293125/article/details/79625741