• 蓝桥杯 题库 简单 每日十题 day3


    在这里插入图片描述

    01 约数个数

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

    1200000 有多少个约数(只计算正约数)。

    解题思路
    枚举,从1开始一直到1200000本身都作为1200000的除数,如果可以整除,则是它的约数

    #include 
    using namespace std;
    int main() {
        int n = 1200000;
        int sum = 0;     
        for (int i=1; i<=1200000; i++) {
            if (n % i ==0)
                sum++; 
        }  
        cout << sum;    
        return 0; 
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    02 平方和

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

    小明对数位中含有 2、0、1、9 的数字很感兴趣,在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574,平方和是 14362。

    注意,平方和是指将每个数分别平方后求和。

    请问,在 1 到 2019 中,所有这样的数的平方和是多少?

    #include 
    using namespace std;
    int main()
    {
      long long ans=0;
      int n;
      for(int i=1;i<=2019;i++)
      {
        n=i;
        while(n)
        {
          int m=n%10;
          if(m==2||m==0||m==1||m==9)
          {
            ans+=i*i;
            break;
          }
          n/=10;
        }
      }
      cout<<ans;
      return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    03 星期一

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

    整个 20 世纪(1901 年 1 月 1 日至 2000 年 12 月 31 日之间),一共有多少个星期一?(不要告诉我你不知道今天是星期几)

    #include
    int main()
    {
        int i,s=0;
        for(i=1901;i<=2000;i++)
        {
            if(i%4==0&&i%100!=0||i%400==0)
            {
                s++;
            }
        }
        s=(365*100+s);
        printf("%d",s/7);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    04 猴子分香蕉

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

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

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

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

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

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

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

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

    #include
    using namespace std;
    int main()
    {
        for(int n=10;;n++)
        {
            int x1=n-n/5-1; //第1只猴子剩下的香蕉数量 
            int x2=x1-x1/5-2;//第2只猴子剩下的香蕉数量 
            int x3=x2-x2/5-3;
            int x4=x3-x3/5-4;
            int x5=x4-x4/5;
            //判断第一只猴子平均分成五份后是否有多余1个香蕉,再判断第二只猴子平均分成五份后是否还剩余2个香蕉,以此类推
            //注意:一定要判断x4是否等于0 ,要确保最后一个猴子能拿到香蕉 
            if(n%5==1&&x1%5==2&&x2%5==3&&x3%5==4&&x4%5==0&&x4!=0)
            {
                cout<<n<<endl;
                return 0;
            }
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    05 合数个数

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

    一个数如果除了 1 和自己还有其他约数,则称为一个合数。例如:1,2,3 不是合数,4, 6是合数。

    请问从 1 到 2020 一共有多少个合数。

    #include 
    using namespace std;
    int main()
    {
      // 请在此输入您的代码
      int cnt=0;
      for(int i=3;i<=2020;i++){
        for(int j=2;j<i;j++){
          if(i%j==0){
            cnt++;
            break;
          }
        }
      }
      printf("%d",cnt);
      return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    06 玩具蛇

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

    小蓝有一条玩具蛇,一共有 16 节,上面标着数字 1 至 16。每一节都是一个正方形的形状。相邻的两节可以成直线或者成 90 度角。

    小蓝还有一个 4 × 4 的方格盒子,用于存放玩具蛇,盒子的方格上依次标着字母 A 到 P 共 16 个字母。

    小蓝可以折叠自己的玩具蛇放到盒子里面。他发现,有很多种方案可以将玩具蛇放进去。

    下图给出了两种方案:

    在这里插入图片描述

    玩具蛇思路:难点是如何用代码抽象出来题目的条件,其实我们可以自己模拟一下放玩具蛇的过程,相邻的节数满足直线和九十度,可以抽象成,下一节的放置是上一节模拟上下左右移动的过程,那么这就是一个dfs的模板题了

    #include 
    using  namespace std;
    int graph[4][4];
    int visited[4][4];
    int dx[4] = { 1,-1,0,0 };
    int dy[4] = { 0,0,1,-1 };
    int ans = 0;
    int count1 = 0;
    void dfs(int i, int j)
    {   
        if (count1 >= 15)
        {
            ans++;
            return;
        }
        for (int k = 0;k < 4; k++)
        {
            int x = i + dx[k];
            int y = j + dy[k];
            if (x >= 0 && x < 4 && y >= 0 && y < 4 && visited[x][y] == 0)
            {
                visited[x][y] = 1;
                count1++;
                dfs(x, y);
                count1--;
                visited[x][y] = 0;
            }
        }
    }
    int main()
    {
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                visited[i][j] = 1;
                dfs(i, j);
                visited[i][j] = { 0 };
                count1 = 0;
            }
        }
        cout << ans << endl;
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    07 矩形切割

    在这里插入图片描述

    #include
    int main()
    {
      int i,a=2019,b=324;
        for(i=1;a!=b;i++)
        {
            if(a>b)a=a-b;
            else b=b-a;
        }
        printf("%d",i);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    08 美丽的 2

    在这里插入图片描述

    #include 
    using namespace std;
    int main()
    {
      int n=0;
      for(int i=2;i<=2020;i++)
      {
        int temp=i;
        while(temp>0)
        {
          if(temp%10==2)
          {
            n++;
            break;
          }
          temp/=10;
        }
      }
      cout<<n<<endl;
      // 请在此输入您的代码
      return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    09 一步之遥

    在这里插入图片描述
    题意
    小明有两种操作:操作1,使数字加97,操作2,使数字减127,问小明把0变成1至少要几步?

    分析
    由贝祖定理可知给予二个整数a、b,必存在整数x、y使得ax + by = gcd(a,b) ,且存在x < b, y < a满足等式。因为gcd(97, 127) = 1,所以可以断定小明可以把0变成1,并且步数在97 + 127步之内。只需要设计一个O(n^2)复杂度的算法即可满足需求。

    解法
    枚举操作1和操作2的次数,若结果刚好为1,记录为可能答案,在所有可能答案中选一个最小值即可。

    提高
    扩展欧几里得算法可以快速求得x和y的值。时间复杂度O log(min(a,b))

    详见连接 https://blog.csdn.net/destiny1507/article/details/81750874

    #include 
    using namespace std;
    int main() {
        int ans = 600;//答案必然在600以内
        for (int i = 0; i <= 300; i++) {//枚举操作1
            for (int j = 0; j <= 300; j++) {//枚举操作2
                if (i * 97 - j * 127 == 1) ans = min(ans, i + j);//求最小答案
            }
        }
        printf("%d\n", ans);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    法二

    #include
    using namespace std;
    int main()
    {
        //感觉是数学问题
        //列个方程:97x-127y=1. x为F的操作次数,y为B的操作次数
        //所以y=(1+127x)/97;
        int pos=0;
        int x=0,y=0;
        for(int i=1;i<=1000;i++)
        {
            if((1+127*i)%97==0)//遍历找到x
            {
                x=i;
                y=(1+127*i)/97;
                break;
            }
        }
        cout<<x+y;
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    10 煤球数目

    在这里插入图片描述

    #include 
    using namespace std;
    int main()
    {
      int cengshu,first=1,sum=0;            //每层的个数等于上一层的个数加层数//
      for(cengshu=1; cengshu<=100; cengshu++)
      {
           sum=sum+first;
           first=first+(cengshu+1);
      }
      cout<<sum<<endl;
      // 请在此输入您的代码
      return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    编辑器报警处理
    一面数据: Hadoop 迁移云上架构设计与实践
    网课答案公众号搭建-——网课题库接口
    强化学习 多臂赌博机
    领域驱动设计DDD:贫血模型和充血模型(比较重要)
    js前端获取农历日期
    传奇开服教程——传奇微端架设教程-GEE引擎
    HCIA笔记-1 网络基础
    六、防御保护---防火墙内容安全篇
    【笔记 Pytorch】模型网络结构、网络参数可视化
  • 原文地址:https://blog.csdn.net/weixin_74774974/article/details/132939239