蓝桥杯真题31日冲刺国一 | 每日题解报告 第五天

简介: 大家好,我是泡泡,给大家带来今天的题解

一、猴子分香蕉


题目链接:猴子分香蕉 - 蓝桥云课 (lanqiao.cn)


题目要求:


5 只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙滩上离去。


第 1 只猴子醒来,把香蕉均分成 5 堆,还剩下 1 个,就吃掉并把自己的一份藏起来继续睡觉。


第 2 只猴子醒来,把香蕉均分成 5 堆,还剩下 2 个,就吃掉并把自己的一份藏起来继续睡觉。


第 3 只猴子醒来,把香蕉均分成 5 堆,还剩下 3 个,就吃掉并把自己的一份藏起来继续睡觉。


第 4 只猴子醒来,把香蕉均分成 5 堆,还剩下 4 个,就吃掉并把自己的一份藏起来继续睡觉。


第 5 猴子醒来,重新把香蕉均分成 5 堆,哈哈,正好不剩!


请计算一开始最少有多少个香蕉。


解题思路:


按照题意暴力模拟即可,注意 每次藏一份根据剩下的来藏 而不是藏一个,踩过坑。


#include<bits/stdc++.h> 
using namespace std;
int main()
{
  int a = 6;
  while(1)
  {
  if(a%5==1)
  {
    int i = a-(a-1)/5;
    i -= 1; 
    if(i%5==2)
    {
    int i2 = i-(i-2)/5;
    i2=i2-2;
    if(i2%5==3)
    {
      int i3=i2-(i2-3)/5;
      i3=i3-3;
      if(i3%5==4)
      {
      int i4=i3-(i3-4)/5;
      i4=i4-4;
      if(i4%5==0&&i4!=0)
      {
        cout<
        return 0;
      } 
      }
    }
    }
  } 
  a++;
  }
}


二、等差数列


题目链接:等差数列 - 蓝桥云课 (lanqiao.cn)


题目要求:


数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一 部分的数列,只记得其中 N 个整数。


现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有几项?


解题思路:


很简单的一道题,先排序找出最小的差,它就是等差数列的差,要注意判断一下是否为0,看代码!


#include<bits/stdc++.h>
using namespace std;
//就是对它先排序找出最小的差,那就是等差数列差,
//要注意的一点就是要判断一下它的差是不是0,如果是0的话最小就是n个。
int a[100001];
int main()
{
  int n;
  cin>>n;
  int x = INT_MAX;
  for(int i=0;i
  {
  cin>>a[i];
  }
  sort(a,a+n);
  for(int i=1;i
  {
        x = min(a[i]-a[i-1],x);//找到最小的差 就是等差数列的差 
    }
    if(!x)
  {
  cout<
  }
    else
  {
        int sum = (a[n-1]-a[0])/x+1;//如果不是0 那就让最大的数-最小的数并且除以该差+1 
        cout<<sum;
    }
    return 0;
}


三、平方序列


题目链接:平方序列 - 蓝桥云课 (lanqiao.cn)


题目要求:


小明想找到两个正整数 X 和 Y,满足


1.2019 < X < Y


2.2019^2, X^2, Y^2 组成等差数列。


请你求出在所有可能的解中,X + Y 的最小值是多少?


解题思路:


这个也是暴力题,按照题意模拟即可。


#include<bits/stdc++.h>
using namespace std;
int main()
{
  for(int i=2020;i<10001;i++)
  {
  int x = i*i*2-2019*2019;
  int y = sqrt(x);
  if(y*y==x)
  {
    cout<<i+y;
    return 0;
  }
  }
}


四、倍数问题


题目链接:倍数问题 - 蓝桥云课 (lanqiao.cn)


题目要求:


众所周知,小葱同学擅长计算,尤其擅长计算一个数是否是另外一个数的倍数。但小葱只擅长两个数的情况,当有很多个数之后就会比较苦恼。现在小葱给了你 n 个数,希望你从这 n 个数中找到三个数,使得这三个数的和是 K 的倍数,且这个和最大。数据保证一定有解。


解题思路:


可以用二维数组加双层循环遍历和剪枝AC,直接看代码吧,我在代码里模拟两边 写了注释 大家理解一下自己代入值体验一下代码怎么跑的就懂了。


#include<bits/stdc++.h>
using namespace std;
int f[1003][3];
long long maxx,a,b,c;
int main()
{
  int n,k;4 3
    cin>>n>>k;
    for(int i=0;i
    {
        int x;
        cin>>x;//1 2 3 4
        int m = x%k;//1除3的余数1 2%3=2 3%3 = 0 4%3 = 1
        if(x>f[m][0])//1大于f[1][0] 2大于f[2][0] 3大于f[3][0] 4大于f[1][0] 
        {
            f[m][2] = f[m][1];//维护 更新最大 第二大 第三大的值 
            f[m][1] = f[m][0];
            f[m][0] = x;
            //f[1][0] = 1 f[2][0] = 2 f[0][0] = 3 f[1][0]从1变4 
        }
        else if(x>f[m][1]) 
        {
            f[m][2] = f[m][1];
            f[m][1] = x;
        }
        else if(x>f[m][2])
        {
            f[m][2] = x;
        }
    }
    for(int i=0;i
    {
        for(int j=0;j
        {//a + b + c%k = (a%k + b%k + c%k) %k
        //所以知道前两个就能得出来第三个的余数 第三个值为k-a%k+k-b%k  
        //如果觉得难理解可以看看 a+b+c=d 求第三个数就是 d-a-b=c 
            int kk = (k-i+k-j)%k;//得到第三个余数这三个余数凑为k的倍数 第二次得到为2 
            a = f[i][0]; //f[0][0]是0 f[0][0]还是0 
            if(i==j)//0=0 0!=1 
            {
                b = f[i][1];//f[0][1]也是0 
                if(i==kk)//现在的kk是2 不相等 
    {
      c = f[i][2];
    }
                else
    {
      c = f[kk][0];//c = f[2][0](2) 
    }
            }
            else
            {
                b = f[j][0];//b = f[1][0] = 4
                if(i==kk)//0!=2
    {
      c = f[i][1];
    }
                else if(j==kk)//1!=2
    {
      c = f[j][1];
    }
                else//c = f[2][0] = 2
                {
                  c = f[kk][0];
    }
            }
            if(a+b+c>maxx)//0+0+2大于maxx 0+4+2大于2 maxx = 6 
    {
    maxx = a+b+c;
    }
        }
    }
    cout<<maxx;
    return 0;
}



目录
相关文章
|
存储
【蓝桥杯冲刺】蓝桥杯12届省赛C++b组真题-填空题
【蓝桥杯冲刺】蓝桥杯12届省赛C++b组真题-填空题
104 1
|
测试技术
【蓝桥杯冲刺】蓝桥杯13届省赛C++b组真题-A~E题
【蓝桥杯冲刺】蓝桥杯13届省赛C++b组真题-A~E题
143 0
|
人工智能 测试技术 BI
【蓝桥杯冲刺】蓝桥杯11届省赛C++b组真题-编程题
【蓝桥杯冲刺】蓝桥杯11届省赛C++b组真题-编程题
110 0
【蓝桥杯冲刺】蓝桥杯11届省赛C++b组真题-填空题
【蓝桥杯冲刺】蓝桥杯11届省赛C++b组真题-填空题
126 0
【蓝桥杯冲刺】日期类专题特训
【蓝桥杯冲刺】日期类专题特训
45 0
|
人工智能 测试技术
【蓝桥杯冲刺】蓝桥杯12届省赛C++b组真题-编程题
【蓝桥杯冲刺】蓝桥杯12届省赛C++b组真题-编程题
107 0
|
机器学习/深度学习 存储 测试技术
蓝桥杯冲刺-倒数第八天-省赛题
蓝桥杯冲刺-倒数第八天-省赛题
115 0
|
机器学习/深度学习 Python
【蓝桥杯真题】16天冲刺 Python
【蓝桥杯真题】16天冲刺 Python
217 0
【蓝桥杯真题】16天冲刺 Python
|
算法 Python 容器
【蓝桥杯真题】18天Python组冲刺 心得总结
【蓝桥杯真题】18天Python组冲刺 心得总结
182 0
【蓝桥杯真题】18天Python组冲刺 心得总结
蓝桥杯倒数七天冲刺国一之每日复习第六天
大家好,我是泡泡,今天是复习第六天!今天有事,稍微水一下
105 0