学校网站建设实训,服务器安全工具,三网一体网站建设,番禺南村网站建设题目描述
小明对数位中含有 2、0、1、9 的数字很感兴趣#xff08;不包括前导 0#xff09;#xff0c;在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40#xff0c;共 28 个#xff0c;他们的和是 574。
请问#xff0c;在 1 到 n 中#xff0c;所有这样的数的…题目描述
小明对数位中含有 2、0、1、9 的数字很感兴趣不包括前导 0在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40共 28 个他们的和是 574。
请问在 1 到 n 中所有这样的数的和是多少
输入描述
输入格式
输入一行包含两个整数 n1≤n≤104。
输出描述
输出一行包含一个整数表示满足条件的数的和。
输入输出样例
示例 输入 40输出 574运行限制
最大运行时间1s最大运行内存: 256M
总通过次数: 19015 | 总提交次数: 19790 | 通过率: 96.1%
难度: 简单 标签: 2019, 暴力, 枚举, 省赛
解题过程
#include iostream
using namespace std;
int tmp(int a)
{int k0,s0;for(int ja;j!0;jj/10){kj%10;if(k2||k0||k1||k9){s;}}return s;
}
int main()
{// 请在此输入您的代码int n;cinn;int sum0,k0;for(int i1;in;i){if(tmp(i)!0){sumsumi;}}coutsum;return 0;
} 注意事项 在编写这个代码过程中我们应该注意的是如何将一个数字的个、十、百、千等等拆分出来进行判断并且在判断的过程中如果一个数字的不同位置出现了2个或2个以上的题目要求的数字怎么办避免重复相加。 函数 tmp(int a) int tmp(int a)
{int k0,s0;for(int ja;j!0;jj/10){kj%10;if(k2||k0||k1||k9){s;}}return s;
}这个函数用于计算整数 a 中包含多少个数字 0、1、2 或 9。该函数包含以下部分 变量初始化初始化变量 k 和 s分别用于存储每个数字和计数。循环从个位开始循环拆分数字循环条件是 j 不等于 0每次循环结束更新 j 的值为 j/10。数字判断通过取余运算获取每次循环中的个位数字 k然后判断 k 是否为 0、1、2 或 9如果满足条件则计数器 s 自增。返回结果返回计数器 s 的值作为函数的返回值。 主程序 main() int main()
{int n;cinn;int sum0,k0;for(int i1;in;i){if(tmp(i)!0){sumsumi;}}coutsum;return 0;
}这个主程序实现了以下功能 输入从标准输入流中获取一个整数 n用于确定循环范围。变量初始化初始化变量 sum 和 k 为 0分别用于存储满足条件的数字之和和临时变量。循环从 1 开始循环到 n循环条件是 i 小于等于 n每次循环结束更新 i 的值加一。条件判断对每个数 i 调用 tmp() 函数判断返回值是否不等于 0如果满足条件则将当前数 i 累加到 sum 中。输出将 sum 输出到标准输出流中。返回结果返回 0表示程序正常结束。