蓝桥杯 编程求解根号3 C++算法提高 HERODING的蓝桥杯之路

资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
  进行数学运算是计算机的主要能力,利用计算机的重复计算能力可以帮助人们求解一些十分复杂的数学运算,比如高次方程、求根,求平方等。根号运算是数学的基本运算,对于无理数的求解,我们可以使用两边取值,不断逼近的方法进行求解。现要求你编程实现根号3的求解。
输入格式
  无输入
输出格式
  输出根号3的求解结果
样例输入

样例输出

数据规模和约定
  初始边界值分别为:low=1.0,high=2.0,更新边界值使用平均数,并要求循环20次后输出结果。

解题思路:
二分法可以用于解决该题,当然二分法的实现可以用递归,这里我直接用while循环,每次取low和high的中间值并平方,判断大于3还是小于3,如果小于3就把mid的值赋予low,如果大于3就把mid的值赋予high,循环20次输出mid,代码如下:

#include<bits/stdc++.h>

using namespace std;

int main(){
	double low = 1.0;
	double high = 2.0;
	double mid;
	int i = 0;
	while(i < 20){
		mid = (high + low) / 2;
		if(mid * mid < 3){
			low = mid;
		}else{
			high = mid;
		}
		i ++;
	}
	cout << mid;
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/HERODING23/article/details/106650308
今日推荐