本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
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); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)