• 【蓝桥杯第十二届省赛B】(部分详解)


    空间

    8位1b
    1kb=1024b(2^10)
    1mb=1024kb(2^20)

    时间显示

    #include 
    using LL=long long;
    using namespace std;
    int main()
    {
        LL t;
        cin>>t;
        int HH,MM,SS;
        t/=1000;
        SS=t%60;
        //like370000ms=370s,最后360转成分余下10s
        t/=60;
        MM=t%60;
        t/=60;
        HH=t%24;
        printf("%02d:%02d:%02d",HH,MM,SS);
    // 请在此输入您的代码
      return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    上次用02d还是c语言入门的时候,我就说我连门都没入吧(
    div(/)本位转换基数,rem(%)高一位转换基数

    路径(dp杀我*n)

    #include 
    #include
    using namespace std;
    int gcd(int x,int y)
    {
        return y==0?x:gcd(y,x%y);
    }
    int lcm(int x,int y)
    {
        return x*y/gcd(x,y);
    }
    int main()
    {
        int dp[2022];
        ios::sync_with_stdio(false);
        cin.tie(0),cout.tie(0);
        memset(dp,0,sizeof(dp));
        for(int i=1;i<=2021;i++)
        {
            for(int j=i+1;j<=i+21;j++)
            {
                if(j>2021)
                break;
                if(dp[j]==0)
                dp[j]=dp[i]+lcm(i,j);
                else
                dp[j]=min(dp[j],dp[i]+lcm(i,j));
            }
               
    
        } cout << dp[2021] << 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
    int f[4]; // 声明一个大小为 4 的整型数组
    
    int dp[4]={0}; 
    
    for (int i = 1; i <= 3; i++)
    {
        for (int j = i + 1; j <= i + 2; j++) 
        {
            if (j > 3) 
                break;
            if (dp[j] == 0)
                dp[j] = dp[i] + j * i / gcd(i, j); 
            else
                dp[j] = min(dp[j], dp[i] + j * i / gcd(i, j));
                 // 将 f[j] 更新为当前值和新值的较小值
        }
    }
    
    cout << f[3] << endl; 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    1. i = 1 时,j 的范围是 23

      • 对于 j = 2
        • f[2] 的初始值为 0,因此计算新值 f[2] = f[1] + 2 * 1 / gcd(1, 2) = 0 + 2 * 1 / 1 = 2,所以 f[2] = 2
      • 对于 j = 3
        • f[3] 的初始值为 0,因此计算新值 f[3] = f[1] + 3 * 1 / gcd(1, 3) = 0 + 3 * 1 / 1 = 3,所以 f[3] = 3
    2. i = 2 时,j 的范围是 34

      • 对于 j = 3
        • f[3] 的当前值为 3,计算新值 f[3] = min(f[3], f[2] + 3 * 2 / gcd(2, 3)) = min(3, 2 + 3 * 2 / 1) = min(3, 8) = 3,所以 f[3] 不变。
      • 对于 j = 4
        • j > 3,因此跳出循环。
    3. 最终输出 f[3] 的值,结果为 3

    j循环: 在第i个节点可以有的路径有哪些
    i循环:上一节点到下一节点的值和当前节点到下一节点的值比较
    在这里插入图片描述

    卡片

    #include 
    using LL=long long;
    using namespace std;
    int main()
    {
        LL n;
        cin>>n;
        LL sum=0;
        LL k=1;
        while(sum<n)
        {
            sum+=k;
            k++;
        }
        cout<<k-1;
      // 请在此输入您的代码
      return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    货物摆放

    #include 
    #include
    using LL=long long;
    using namespace std;
    LL N=2021041820210418;
    LL a[100005];
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0),cout.tie(0);
        LL cnt=0;
        LL ans=0;
        for(LL i=1;i<=sqrt(N);i++)
        {
            if(N%i==0)
            {
                a[cnt]=i;
                cnt++;
            if (N / i != i)
                {
                    a[cnt] = (N / i);
                    cnt++;
                }
        }
        }//试了一下,我就说如果不这么算会超时
        for(LL L=0;L<cnt;L++)
            for(LL W=0;W<cnt;W++)
                for(LL H=0;H<cnt;H++)
                {
                    if(a[L]*a[W]*a[H]==N)
                    {
                        ans++;
                    }
                }
        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
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
  • 相关阅读:
    牛客小白月赛60-D-游戏购买!
    软件测试面试题:你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决?
    Web漏洞之文件上传(方式总结)
    甘特图来搞定跨部门协作难的问题!项目经理必备
    WordPress网站更改后台登录地址保姆级图文教程
    经典CAN2.0 DBC快速切换为CANFD DBC
    二十三种设计模式全面解析-解密迭代器模式:探索遍历之道
    Cesium Vue(一)— 项目初始化配置
    基于安卓android微信小程序的个人管理小程序
    MySql学习笔记10——视图介绍
  • 原文地址:https://blog.csdn.net/2301_76518242/article/details/137223011