题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
1/1+1/2+1/4+1/8+⋯
每项是前一项的一半,如果一共有 20 项,求这个和是多少,结果用分数表示出来。
类似:3/2,当然,这只是加了前 2 项而已。分子分母要求互质。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
-
#include <stdio.h> #include <stdlib.h> #include <math.h> // int gcd(int a,int b) // { // if(a % b == 0) // { // return b; // } // else // { // return gcd(a,a%b); // } // } int main(int argc, char *argv[]) { // 请在此输入您的代码 int m = pow(2,19); int n = 20; // printf("%d",m); long long sum = 0; for(int i = 0;i<20;i++) { sum += pow(2,i); } // int g = gcd(sum,m); // printf("%d\n",g); printf("%d/%d",sum,m); return 0; }
解题思路:
-
因为题目要求输出分子分母互质,所以先写了一个算公约数的函数,在输出的时候分子分母同除公约数。结果发现第20项分子分母公约数为1,原本就互质,所以就注释掉了。
-
首先确定分母m,第n项为pow(2,n-1)
-
然后把每项通分,分子相加
-
第i项分子为pow(2,20-i)
-
求和,输出即可。