蓝桥杯 2018省赛 分数

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

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)

  • 求和,输出即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值