蓝桥--分数输出

题目:1/1 + 1/2 + 1/4 + 1/8 + 1/16 + .... 每项是前一项的一半,如果一共有20项,求这个和是多少,结果用分数表示出来。

问题分析:这个问题逻辑上一个20轮循环就能解决的问题,但是我们要考虑C或C++的处理精度问题,这道题规定的每一项是前一项的一般,这就简单啦,直接分子分母分开计算,因为是1/2倍轮番,所以直接可以用最后一项的分母作为分母,而此时20项的分子刚好交叉对应分母值,所以分母之和也是分子之和,看代码:

#include<iostream>
using namespace std;

int main() {
	int m = 1,sum=0;
	for (int i = 1; i <= 20; i++) {
		sum =sum+ m;
		m = m*2;
	}
	cout <<sum<<"/"<< m/2 << endl;  //把m除以2是因为第一项为1,20轮循环下来,相当于分母翻了21倍,所以除以2取其第二十项的分母作为分母
	return 0;
}

运行结果:

答案:1048575/524288

发布了51 篇原创文章 · 获赞 5 · 访问量 2022

猜你喜欢

转载自blog.csdn.net/MARS_098/article/details/103174294