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

蓝桥杯手算题和杂题简易做法

一、巧用Excel

Excel在解决某些数学问题时非常高效,特别是涉及表格计算、简单统计和可视化分析时。

二、手算技巧

对于简单的计算题,手算可能是最快的方法,但要注意:

  1. 确保计算精度
  2. 验证计算结果
  3. 适用于小规模数据

三、Python的优势

Python在处理字符、大数运算、日期问题等方面具有明显优势。

1. 日期处理

Python的datetime库提供了强大的日期处理功能:

from datetime import *date1 = datetime(1901, 1, 1)
date2 = datetime(2000, 12, 31)
print(date1.weekday())  # 周一为0,周日为6
timedelta = date2 - date1
print(timedelta.days // 7)  # 计算周数差

2. 顺子日期问题

Python实现:

from datetime import *date1 = datetime(2022, 1, 1)
cnt = 0
for i in range(0, 365):s = "%02d%02d%02d" % (date1.year, date1.month, date1.day)date1 += timedelta(days=1)if "012" in s or "123" in s or "234" in s or "345" in s or "456" in s or "678" in s or "789" in s:cnt += 1
print(cnt)

C++实现:

#include <bits/stdc++.h>
using namespace std;int months[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};bool check(string s) {for(int i = 0; i+2 < s.size(); i++)if(s[i]+1 == s[i+1] && s[i]+2 == s[i+2])return true;return false;
}int main() {int y = 2022, m = 1, d = 1;int cnt = 0;for(int i = 0; i < 365; i++) {char s[10];sprintf(s, "%04d%02d%02d", y, m, d);if(check(s)) cnt++;d++;if(d > months[m]) {d = 1;m++;}}cout << cnt << endl;return 0;
}

四、大数运算

Python处理大数运算非常方便,无需考虑溢出问题。

1. 乘积尾零问题

nums = [5650, 4542, 3554, ...]  # 100个数字
s = 1
for i in nums:s *= i
cnt = 0
while s % 10 == 0:s //= 10cnt += 1
print(cnt)

2. 大数相乘问题

Python解法:

for i in range(1, 1000000008):if (i * 2021) % 1000000007 == 999999999:print(i)break

C++需要使用快速幂和模逆元:

#include <iostream>
using namespace std;const long long MOD = 1000000007;long long fastPow(long long a, long long b, long long mod) {long long res = 1;a %= mod;while (b > 0) {if (b % 2 == 1) {res = (res * a) % mod;}a = (a * a) % mod;b /= 2;}return res;
}int main() {const long long target = 999999999;const long long multiplier = 2021;long long inv_2021 = fastPow(multiplier, MOD - 2, MOD);long long i = (target * inv_2021) % MOD;cout << i << endl;return 0;
}

五、字符处理

Python在字符串处理方面非常强大。

1. 平方和问题

Python实现:

sum = 0
for i in range(1, 2020):s = str(i)if '2' in s or '0' in s or '1' in s or '9' in s:sum += i * i
print(sum)

C++实现:

#include <bits/stdc++.h>
using namespace std;bool containsDigits(int num) {string s = to_string(num);for (char c : s) {if (c == '2' || c == '0' || c == '1' || c == '9') {return true;}}return false;
}int main() {long long sum = 0;for (int i = 1; i < 2020; ++i) {if (containsDigits(i)) {sum += i * i;}}cout << sum << endl;return 0;
}

2. 三角回文数

for k in range(4000, 20000):n = k * (k + 1) // 2s = str(n)if s[::-1] == s:print(k, n)break

六、杂题技巧

蓝桥杯中有些题目不需要复杂算法,主要考察思维逻辑。

1. 裁纸刀问题

两种解法:

  1. 模拟法:4(边界) + 19(行) + 21×20(列) = 443
  2. 扩展法:4(边界) + 439(增加纸张) = 443

2. 修建灌木

#include <bits/stdc++.h>
using namespace std;int main() {int n;cin >> n;for(int i = 0; i < n; i++) {cout << max(i, n-i-1) * 2 << endl;}return 0;
}

http://www.dtcms.com/a/327383.html

相关文章:

  • 《Auracast广播音频技术解析及未来路线图》 —蓝牙技术联盟 市场拓展经理 吴志豪 技术与市场经理 鲁公羽
  • 基于 DiT 大模型与字体级分割的视频字幕无痕擦除方案,助力短剧出海
  • 深度学习与遥感入门(六)|轻量化 MobileNetV2 高光谱分类
  • 4.7 GB 视频导致浏览器内存溢出(OOM)的解决方案
  • 从零部署Nacos:替代Eureka的服务注册与服务发现基础教程
  • 视频输入输出模块介绍和示例
  • Dubbo 3.x源码(33)—Dubbo Consumer接收服务调用响应
  • Python day42
  • tensorrt-llm0.20.0离线部署DeepSeek-R1-Distill-Qwen-32B
  • 第六十三章:AI模型的“跨界之旅”:不同硬件架构下的兼容性方案
  • Linux NAPI 实现机制深度解析
  • 【CDA 新一级】学习笔记第1篇:数据分析的时代背景
  • 【前端八股文面试题】【JavaScript篇7】什么是JavaScript的原型、原型链? 有什么特点
  • 【设计模式精解】Java实现责任链模式(职责链模式)优雅处理多级请求(概述,使用场景,优缺点,代码示例)
  • Rust:构造函数 new() 如何进行错误处理?
  • 信号(Signal)** 是一种进程间异步通信机制,用于通知进程发生发生了某种事件(如错误、用户中断等)
  • 疯狂星期四文案网第37天运营日记
  • Apache POI中通过WorkBook写入图片后出现导出PDF文件时在不同页重复写入该图片问题,如何在通过sheet获取绘图对象清除该图片
  • 通过限制对象的内存分配位置来实现特定的设计目标
  • 【数据结构入门】堆
  • powerbi本地报表发布到web,以得到分享链接
  • C99中的变长数组(VLA)
  • 什么是 Spring MVC?
  • 中扬立库与西门子深化技术协同 共绘智能仓储创新蓝图
  • clean install 和 clean package 的区别
  • JVM学习笔记-----图解方法执行流程
  • 百胜软件×华为云联合赋能,“超级国民品牌”海澜之家新零售加速前行
  • 【力扣494】目标和
  • 【软考中级网络工程师】知识点之 IP QoS 技术
  • JVM宝典