题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
11+12+14+18+⋯frac{1}{1} + frac{1}{2} + frac{1}{4} + frac{1}{8}+cdots11+21+41+81+⋯
每项是前一项的一半,如果一共有 202020 项,求这个和是多少,结果用分数表示出来。
类似:32frac{3}{2}23,当然,这只是加了前 222 项而已。分子分母要求互质。
运行限制
最大运行时间:1s最大运行内存: 128M
解法一:python 3
import os import sys # 请在此输入您的代码 from fractions import Fraction mu=2**19 zi=int(1*((1-2**20)/(1-2))) print(Fraction(zi,mu))#Fraction可以自动约分,不要用format
解法二:python 3
import os
import sys
# 请在此输入您的代码
b = 0
a = 1
for i in range(20):
b += a
a *= 2
print('%d/%d'%(b,a/2))
解法三:c++
#include#include using namespace std; long long gcd(long long a,long long b) { return b == 0 ? a : gcd(b, a%b); } int main() { long long a = 0, b = 0; b = pow(double(2), double(19)); //分母 for (int i = 1; i <= 20; ++i) { a += (b / pow(double(2),double(i-1))); //通分后的分子 } cout << a / gcd(a, b) << "/" << b / gcd(a, b) << endl; return 0; }
解法四:c语言
#includeint main() { int i,j,b=1,c=0,a=1; for(i=1;i<20;i++) { a = a*2; b += a; } printf("%d/%dn",b,a); return 0; }
解法五:Java
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
static int GCD(int x,int y){//求最大公约数
if(y==0){
return x;
}
return GCD(y,x%y);//是x%y,不是x/y
}
public static void main(String[] args) {
int bot=1;
int top=1;
for (int i = 1; i <20 ; i++) {
top=2*top+1;
bot=bot*2;
}
int gcd=top>bot?GCD(top,bot):GCD(bot,top);//没有if
System.out.println(top/gcd+"/"+bot/gcd);
}
}



