回顾理解蓝桥杯的题目,不难发现蓝桥杯其实就是暴力破解杯,稍微有一点数学基础的人,拿到省二省一都不是问题,更过分的可以说其实填空题都用不到编译器,用知乎上的一个段子来说就是:当我正在编译器上敲的热火朝天时,发现领座用Excel和计算器已经轻松的答完了填空题,这一届蓝桥杯在暴力破解杯的基础上升级为阅读理解杯,阅读的难度明显高于往届,话不多说我们开始分析一下题目
试题 A: 求和 本题总分:5 分
【问题描述】 小明对数位中含有 2、0、1、9 的数字很感兴趣,在 1 到 40 中这样的数包 括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。 请问,在 1 到 2019 中,所有这样的数的和是多少?
答案:1905111
题解:
首先看到关键词“数位”,这道题明显就是提出各数位然后判断是否与’2’,‘0’,‘1’,'9’相等,这与以前学到的水仙花数、回文数类似,所以用暴力解题既方便又快速。
解法一 暴力解题法1
public static int Sum() {
int sum=0;
// 我们尤其要注意到题目中的边界问题,从样例中可以得知边界是要取到的
for (int i = 0; i <= 2019; i++) {
// 取个位上的数字
int a = i % 10;
// 取十位上的数字
int b = i / 10%10;
// 取百位上的数字
int c = i / 100%10;
// 去千位上的数字
int d = i / 1000%10;
// 首先进行数值判断
if (i < 10) {
if (a =&#