赞
踩
题目:
小明对数位中含有 2、0、1、9的数字很感兴趣,在 1 到 40 中这样的数包括 1、2、9、10至 32、39和 40,共 28 个,他们的和是 574,平方和是 14362。
注意,平方和是指将每个数分别平方后求和。
请问,在 1 到 2019 中,所有这样的数的平方和是多少?
方法一:原始野人方法(没错,就是判断每一位是否含有2019)
- public class Test1 {
- public static void main(String[] args) {
- double result = 0;
- for (int i = 0; i <=2019; i++) {
- if (i > 999) {
- if ((i % 10 == 0) || (i % 10 == 1) || (i % 10 == 2) || (i % 10 == 9) ||
- (i % 100 / 10 == 0) || (i % 100 / 10 == 1) || (i % 100 / 10 == 2) || (i % 100 / 10 == 9) ||
- (i % 1000 / 100 == 0) || (i % 1000 / 100 == 1) || (i % 1000 / 100 == 2) || (i % 1000 / 100 == 9) ||
- (i / 1000 == 0) || (i / 1000 == 1) || (i / 1000 == 2) || (i / 1000 == 9)) {
- result += i * i;
- }
- } else if (i > 99) {
- if ((i % 10 == 0) || (i % 10 == 1) || (i % 10 == 2) || (i % 10 == 9) ||
- (i % 100 / 10 == 0) || (i % 100 / 10 == 1) || (i % 100 / 10 == 2) || (i % 100 / 10 == 9) ||
- (i / 100 == 0) || (i / 100 == 1) || (i / 100 == 2) || (i / 100 == 9)) {
- result += i * i;
- }
- } else if (i > 9) {
- if ((i % 10 == 0) || (i % 10 == 1) || (i % 10 == 2) || (i % 10 == 9) ||
- (i / 10 == 0) || (i / 10 == 1) || (i / 10 == 2) || (i / 10 == 9)) {
- result += i * i;
- }
- } else {
- if (i == 0 || i == 1 || i == 2 || i == 9) {
- result += i * i;
- }
- }
- }
- System.out.println(result);
- }
- }
方法二:比较巧妙
- public class Test1Way2 {
- public static void main(String[] args) {
- double result = 0;
- for (int i = 0; i <= 2019; i++) {
- if (check(i)) {
- result += i * i;
- }
- }
- System.out.println(result);
- }
-
- public static boolean check(int number) {
- String a = number + " ";
- if (a.contains("0") || a.contains("1") || a.contains("2") || a.contains("9")) {
- return true;
- } else {
- return false;
- }
- }
- }
方法三:算法利器Python
- # @Author:wanhailin
- # @Software:PyCharm
- # 小明对数位中含有 2、0、1、9的数字很感兴趣,在 1 到 40 中这样的数包括 1、2、9、10至 32、39和 40,共 28 个,他们的和是 574,平方和是 14362。
- # 注意,平方和是指将每个数分别平方后求和。
- # 请问,在 1 到 2019 中,所有这样的数的平方和是多少?
- sum = 0
- for i in range(0, 2019):
- s = str(i)
- if '2' in s or '0' in s or '1' in s or '9' in s:
- sum += i * i
- print(sum)
最后结果为:2654341492或者2.658417853E9
欢迎评论区留言交流、指正不足。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。