当前位置: 首页 > article >正文

蓝桥杯刷题2.21|笔记

参考的是蓝桥云课十四天的那个题单,不知道我发这个有没有问题,如果有问题找我我立马删文。(参考蓝桥云课里边的题单,跟着大佬走,应该是没错滴,加油加油)

一、握手问题

#include <iostream>
using namespace std;
int main()
{
  // 请在此输入您的代码
  //现把这七个人排除在外的话,有43个人
  int a=43;
  int res=43*(43-1)/2;
  cout<<res+7*43<<'\n';

  return 0;
}

二、门牌问题

#include <iostream>
using namespace std;
int main()
{
  // 请在此输入您的代码
  //1到2020,2出现了几次
  int res=0;
  for(int i=1;i<=2020;i++){
    int t=i;
    while(t>0){
      if(t%10==2)res++;
      t=t/10;
    }
  }
  cout<<res<<'\n';
  return 0;
}

三、(数学几何?)小球反弹【重点理解】

(重点理解的原因是我刚开始不太会,记下来下次再看)

参考蓝桥云课题解:

#include <bits/stdc++.h>
using namespace std;

int main(){
    long long t = 1, x = 343720, y = 233333;
    while(1){
        if((15 * t) % x == 0 && (17 * t) % y == 0) break;
        t++;
    }
    printf("%.2f", 2 * sqrt(15 * 15 * t * t + 17 * 17 * t * t));
    return 0;
}

非常巧妙,向大佬学习 

解析

1. 变量初始化
`t`: 表示小球移动的步数,初始值为1。

 `x = 343720`: 矩形的宽度。
`y = 233333`: 矩形的高度。

2. 寻找最小步数 `t`
 

while(1){
    if((15 * t) % x == 0 && (17 * t) % y == 0) break;
    t++;
}

小球每次向右移动15个单位,向上移动17个单位。
要使小球回到起点,必须满足:
  - 水平方向的总移动距离 `15 * t` 是矩形宽度 `x` 的整数倍。
  - 垂直方向的总移动距离 `17 * t` 是矩形高度 `y` 的整数倍。

 因此,`t` 必须是 `x/15` 和 `y/17` 的最小公倍数(LCM)。

3. 计算总距离
 

printf("%.2f", 2 * sqrt(15 * 15 * t * t + 17 * 17 * t * t));

小球移动的总距离可以通过勾股定理计算:
  - 水平距离:`15 * t`
  - 垂直距离:`17 * t`
  - 总距离:`sqrt((15 * t)^2 + (17 * t)^2)`
- 由于小球最终回到起点,路径是往返的,因此总距离需要乘以2。

四、(日期问题)艺术与篮球

#include <bits/stdc++.h>   // 包含所有标准库头文件(竞赛编程常用写法)
using namespace std;
 
// 特殊数值映射表:索引0-9分别对应某种特征值(如可能代表笔画数或其他编码)
int bh[] = {13,1,2,3,5,4,4,2,2,2};  // 注意:原代码初始化语法有误,已修正为单层花括号 
// 月份天数表(索引0占位,1-12对应各月份天数)
int mon[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; 
 
// 闰年判断函数 
bool run(int year) {
  return (year%400==0 || (year%4==0 && year%100!=0)); // 能被400整除 或 能被4整除但不能被100整除 
}
 
void solve() {
  /* 功能:统计2000年1月1日到2024年4月13日之间,
     日期各位数字对应特征值之和超过50的天数 */
  int sum = 0;    // 单日特征值累加器 
  int res = 0;    // 结果计数器 
  
  // 遍历目标时间范围:2000-2024年 
  for(int year = 2000; year <= 2024; year++) {
    // 动态设置二月天数(注意mon[[2]()] 的修改会影响后续计算)
    mon[[2]()]  = run(year) ? 29 : 28;  // 简化写法替代原if-else 
    
    // 遍历12个月份
    for(int month = 1; month <= 12; month++) {
      // 遍历当月每一天(天数由mon[month]动态决定)
      for(int day = 1; day <= mon[month]; day++) {
        // 分解日期数字:年(y1-y4)、月(m1-m2)、日(d1-d2)
        int y1 = year/1000;        // 年的千位数字 
        int y2 = year/100%10;      // 年的百位数字 
        int y3 = year/10%10;       // 年的十位数字 
        int y4 = year%10;          // 年的个位数字 
        int m1 = month/10;         // 月的十位数字(1-9月时为0)
        int m2 = month%10;         // 月的个位数字 
        int d1 = day/10;           // 日的十位数字(1-9日时为0)
        int d2 = day%10;           // 日的个位数字 
        
        // 计算特征值总和(各数字对应bh数组值的累加)
        sum = bh[y1] + bh[y2] + bh[y3] + bh[y4] 
            + bh[m1] + bh[m2] + bh[d1] + bh[d2];
        
        // 判断是否满足条件 
        if(sum > 50) res++;  // 特征值总和超过50则计数 
        
        // 终止条件:到达2024年4月13日时输出结果 
        if(year == 2024 && month == 4 && day == 13) {
          cout << "目标天数:" << res << '\n';
          return;  // 直接结束函数执行 
        }
      }
    }
  }
}
 
int main() {
  solve();
  return 0;
}

五、幸运数


http://www.kler.cn/a/557083.html

相关文章:

  • 爬虫学习第八篇-学习小总结
  • MYSQL查询优化器选错了索引怎么办
  • matlab 轮边驱动系统汽车垂向动力学分析
  • python学opencv|读取图像(七十四)人脸识别:EigenFaces算法
  • vue中将el-table导出为excel文件
  • 使用LangChain构建第一个ReAct Agent
  • C/C++ | 每日一练 (2)
  • 大模型掀起AI新浪潮,传感器成为智能升级关键
  • ABB机器人与西门子PLC、工业相机联合实现无序抓取的完整调试方案
  • ARM Linux下FFmpeg+Nginx+RTMP 视频监控
  • springboot+dubbo+zookeeper的注册服务和调用实践
  • 华为最新OD机试真题-找单词-Python-OD统一考试(E卷)
  • 【未完成】BUU20 [HCTF 2018]admin1
  • 代码随想录算法训练营day40(补0208)
  • 在Ubutu18.04下搭建nfs服务器
  • 用DeepSeek来帮助学习three.js加载3D太极模形
  • 阅读论文笔记《Translating Embeddings for Modeling Multi-relational Data》
  • Javascript使用Sodium库实现 aead_xchacha20poly1305_ietf加密解密,以及与后端的密文交互
  • HarmonyOS NEXT全栈开发深度指南(API 12+)
  • 计算机网络之物理层——基于《计算机网络》谢希仁第八版