题目: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