第九届蓝桥杯C/C++省赛A组解题报告(结果填空)

题目一:分数

1/1 + 1/2 + 1/4 + 1/8 + 1/16 + ….
每项是前一项的一半,如果一共有20项,
求这个和是多少,结果用分数表示出来。
类似:
3/2
当然,这只是加了前2项而已。分子分母要求互质。

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

答案:1048575/524288

思路一:

算出分子和分母然后求一下最大公因数,整除输出即可。

代码如下:

#include<iostream>
using namespace std;
int fenzi=1,fenmu=1;
int gcd(int da,int xiao)//求最大公因数
{
  while(xiao)
  {
    int temp=da%xiao;
    da=xiao;
    xiao=temp;
  }
  return da;
}
int main()
{
  int temp=fenmu;
  for(int i=2;i<=20;i++)
  {
    int temp=fenmu;
    fenmu*=2;//计算分母
    fenzi=(fenmu/temp)*fenzi+1;//计算分子
  }
  int k=gcd(fenzi,fenmu);
  cout<<fenzi/k<<'/'<<fenmu/k<<endl;//结果互质
}

思路二:

直接手算,推一下等比数列前N项和公式就行了,不过是否互质还是要判断一下。

题目二:星期一

整个20世纪(1901年1月1日至2000年12月31日之间),一共有多少个星期一?
(不要告诉我你不知道今天是星期几)
注意:需要提交的只是一个整数,不要填写任何多余的内容或说明文字。

答案:5217

思路一:

写一个闰年判断的程序计算这个世纪总共有多少天,然后除以7即可

代码如下:

#include<iostream>
using namespace std;
int main()
{
  int sum=0;
  for(int i=1901;i<=2000;i++)
  {
    if(i%4==0&&i%100||i%400==0) sum+=366;//能被4整除且不能被100整除
    //能被400整除为闰年
    else sum+=365;
  }
  cout<<sum/7<<endl;
}

然后比赛时候考虑小数点后的问题,又怀疑自己闰年判断的有问题。。。于是写了5218交了上去。。。。QNMD!!!

思路二:

打开EXCEL。。。我那台电脑没有,还是辣鸡的XP系统。反正写错不怨我-.-

题目四:第几个幸运数

到x星球旅行的游客都被发给一个整数,作为游客编号。
x星的国王有个怪癖,他只喜欢数字3,5和7。

国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。
我们来看前10个幸运数字是:
3 5 7 9 15 21 25 27 35 45
因而第11个幸运数字是:49

小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。
请你帮小明计算一下,59084709587505是第几个幸运数字。
需要提交的是一个整数,请不要填写任何多余内容。

思路:

尚未完成,待更

猜你喜欢

转载自blog.csdn.net/A7_RIPPER/article/details/79967294