【备战蓝桥杯-每日打卡】Day 1丨特别数的和

该程序解决了一个数学问题,即在1到n的范围内找出包含2、0、1、9这些数字(不包括前导0)的所有整数,并计算它们的和。样例中给出了当n为40时,这些数字的和为574。程序通过循环遍历并检查每个数的每一位来实现这一目标。

资源限制
  时间限制:1.0s 内存限制:256.0MB

问题描述
  小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。请问,在 1 到 n 中,所有这样的数的和是多少?

输入格式
  输入一行包含两个整数 n。

输出格式
  输出一行,包含一个整数,表示满足条件的数的和。

样例输入
40

样例输出
574

评测用例规模与约定
  对于 20% 的评测用例,1 ≤ n ≤ 10。 对于 50% 的评测用例,1 ≤ n ≤ 100。对于 80% 的评测用例,1 ≤ n ≤ 1000。对于所有评测用例,1 ≤ n ≤ 10000。

import java.io.BufferedInputStream;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(new BufferedInputStream(System.in));
		int n = in.nextInt();
		int count = 0;
		for (int i = 1; i <= n; i++) {
			int a = i ;
			while(a!=0){
				if (a % 10 == 2 || a % 10 == 0 || a % 10 == 1 || a % 10 == 9) {
					count += i;
					break;
				}
				a/=10;
			}
	
		}
		System.out.println(count);
	}

}
<think>好的,用户需要获取蓝桥杯A组C++的备赛技巧,特别是最后一天冲刺重点题型解析。首先,我要回忆一下蓝桥杯常见的题型考察重点。根据引用[1]引用[3]提到的内容,蓝桥杯真题中常涉及递归、DFS、动态规划、贪心算法等,比如真题中出现的分治类题目,类似P2392的题,需要将列分成两部分使差值最小,这通常用DFS或动态规划解决。 用户提到最后一天冲刺,这时候时间紧张,应该聚焦于高频考点易错点。根据引用[2]提到的信息,信奥竞赛的初赛复赛题目类型可能有一定参考价值,比如论、排列组合、据结构等。需要结合这些重点,给出复习策略。 接下来,备赛技巧方面,应该包括时间管理、代码模板的复习、真题回顾以及调试技巧。比如在最后一天,不建议学习新知识,而是巩固已掌握的算法,例如DFS、BFS、动态规划的状态转移方程等。同时,代码模板的熟练度很重要,比如快速排序、二分查找的写法,避免现场出错。 重点题型解析部分,需要分模块讲解。例如递归与DFS,动态规划,贪心,论,据结构,字符串处理等。每个部分举出典型例题,并给出解题思路,如引用[3]中的DFS代码示例,可以说明如何应用在分治问题中。 资源推荐方面,引用[1]提供的历年真题剖析引用[2]中的学入门资料可能对用户有帮助。此外,可以建议用户到优快云博客查找相关题解,或者参考洛谷的类似题目进行练习。 还要考虑用户可能的潜在需求,比如如何高效利用最后一天时间,调整心态,避免常见错误。例如,提醒用户注意输入输出效率,使用C++的优化语句,或者注意边界条件测试。 最后,生成的相关问题需要围绕备赛技巧展开,比如时间规划、代码调试方法、动态规划题型等,帮助用户进一步深入查询所需信息。</think>### 蓝桥杯A组C++备赛技巧与重点题型解析 结合历年真题与竞赛经验[^1][^3],以下是冲刺阶段的实用技巧与核心题型解析: --- #### **一、最后一天冲刺技巧** 1. **聚焦高频考点** - **递归与DFS**:如分治问题(如列分两半差值最小)、排列组合问题,需熟练掌握递归终止条件与状态回溯。 - **动态规划**:重点复习背包问题、最长公共子序列、矩阵路径问题,熟记状态转移方程。 - **论与贪心**:质筛法、最大公约、区间调度问题等,确保公式推导熟练,如$gcd(a,b) = gcd(b, a\%b)$。 2. **代码模板速记** - **快速排序/归并排序**:手写排序代码避免依赖STL。 - **二分查找**:注意边界条件(左闭右开或左闭右闭)。 ```cpp int binary_search(int arr[], int target, int len) { int left = 0, right = len - 1; while (left <= right) { int mid = left + (right - left) / 2; if (arr[mid] == target) return mid; else if (arr[mid] < target) left = mid + 1; else right = mid - 1; } return -1; } ``` 3. **真题限时训练** - 选择近3年A组真题模拟考试环境,重点关注**时间复杂度的优化**与**边界条件测试**(如据规模为$10^5$时需使用$O(n \log n)$算法)。 --- #### **二、重点题型解析** 1. **递归与DFS** - **例题**:将组分为两个子集使差值最小(类似P2392[^3])。 - **解法**:DFS枚举所有可能的分割方式,剪枝优化时间复杂度。 ```cpp int res = INT_MAX; void dfs(int index, int sum1, int sum2, vector<int>& nums) { if (index == nums.size()) { res = min(res, abs(sum1 - sum2)); return; } dfs(index + 1, sum1 + nums[index], sum2, nums); // 放入第一组 dfs(index + 1, sum1, sum2 + nums[index], nums); // 放入第二组 } ``` 2. **动态规划** - **背包问题**:01背包与完全背包的状态转移方程: - 01背包:$dp[i][j] = \max(dp[i-1][j], dp[i-1][j-w[i]] + v[i])$ - 优化为一维组:`dp[j] = max(dp[j], dp[j - w[i]] + v[i])`(逆序更新) 3. **论与贪心** - **质判定**:试除法优化至$O(\sqrt{n})$。 - **区间覆盖**:按右端点排序,贪心选择最早结束的区间。 --- #### **三、资源推荐** 1. **历年真题剖析**:参考[蓝桥杯冲刺专栏](https://blog.youkuaiyun.com/xxx)[^1]。 2. **算法模板库**:整理高频代码模板(DFS、DP、排序)。 3. **调试技巧**:使用`assert`验证中间结果,输出中间变量定位错误。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的小林同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值