购物网站开发内容,河南5G网站基站建设信息,有没有做兼职的好网站,在线平面图设计问题描述:
小明对数位中含有 2、0、1、9 的数字很感兴趣#xff0c;在 1 到 40 中这样的数包 括 1、2、9、10 至 32、39 和 40#xff0c;共 28 个#xff0c;他们的和是 574。
请问#xff0c;在 1 到 2019 中#xff0c;所有这样的数的和是多少#xff1f;
思路分析…问题描述:
小明对数位中含有 2、0、1、9 的数字很感兴趣在 1 到 40 中这样的数包 括 1、2、9、10 至 32、39 和 40共 28 个他们的和是 574。
请问在 1 到 2019 中所有这样的数的和是多少
思路分析:
使用循环遍历1到2019之间的每个数然后判断每个数的数位中是否包含2、0、1、9这些数字。若包含则将该数字加入总和中。 有两种实现方法:
数位分解 字符串转换
算法步骤:
初始化总和sum为0。使用一个循环从1到2019遍历每个数字num。在循环中判断num的数位中是否包含2、0、1、9这些数字。 数位分解: 通过除法与取模运算获取各个数位上值然后进行判断。字符串转换: 将num转换为字符串然后使用字符串的contains方法判断是否包含2、0、1、9这些字符。如果包含将num累加到总和sum中。循环结束后输出总和sum。
代码实现:
数位分解:
public class Main {public static void main(String[] args) {int sum 0;for (int i 1; i 2019; i) {if (containsDigits(i)) {sum i;}}System.out.println(在 1 到 2019 中所有这样的数的和是 sum);}public static boolean containsDigits(int num) {while (num 0) {int digit num % 10;if (digit 2 || digit 0 || digit 1 || digit 9) {return true;}num / 10;}return false;}
}
字符串转换:
public class Main {public static void main(String[] args) {int sum 0;for (int i 1; i 2019; i) {if (containsDigits(i)) {sum i;}}System.out.println(在 1 到 2019 中所有这样的数的和是 sum);}public static boolean containsDigits(int num) {String numStr String.valueOf(num);return numStr.contains(2) || numStr.contains(0) || numStr.contains(1) || numStr.contains(9);}
}