解析
我们把题目给的数列拿出来找规律:
我们发现分母有规律可寻,因此我们可以推测出第20项是
题目说了要求我们求出前20项的和,用最简分数形式表示出来。
因此我们需要对整个分数数列进行通分
,最后再约分
:
我们对分子分母分别进行处理,分子我们发现是一个等比数列,我们可以用等比数列求和公式求出:
结论:
因此现在我们的答案就是:
我们只需要对进行一个确切的计算,然后再对其进行约分即可。我们可以一个一个去乘,但是效率太低了,所以在这里用快速幂:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
//求2的n次幂
LL pow_2(int b)
{
LL x=2; //底数为2
LL res=1;
while(b>0)
{
if(b&1) //如果进制位上是1
res*=x;
b>>=1; //右移 ,找下一位是否是1 、
x=x*x; //2的n次方
}
return res;
}
//最大公约数
int gcd(LL a,LL b)
{
return b==0?a:gcd(b,a%b);
}
int main()
{
cout<<gcd(pow_2(20)-1,pow_2(19))<<endl;
cout<< pow_2(20)-1<<"/"<<pow_2(19)<<endl;
return 0;
}