第九届蓝桥杯省赛C++A组 分数

标题:分数

1/1 + 1/2 + 1/4 + 1/8 + 1/16 + ....

每项是前一项的一半,如果一共有20项,求这个和是多少,结果用分数表示出来。

类似:3/2

当然,这只是加了前2项而已。分子分母要求互质。

注意:

需要提交的是已经约分过的分数,中间任何位置不能含有空格。

请不要填写任何多余的文字或符号。

 

答案:1048575/524288

思路:可以用等比求和公式Sn=a1(1-q^n)/(1-q) 来计算,算出来是1048575/524288,如果不确定分子分母是否互质的话可以再来个gcd。

代码:

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<queue>
#include<map>
#include<set>
using namespace std;

int gcd(int a,int b)
{
	return a%b?gcd(b,a%b):b;
}
 
int main()
{
	int a=1048575,b=524288;
	int t=gcd(a,b);
	cout<<a/t<<"/"<<b/t<<endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/ryo_218/article/details/84865115