当前位置:   article > 正文

蓝桥杯-平方和(java)_java解决小明对数位中含有2、0、1、8的数字很感兴趣,在1到40中这样的数包括1、2、

java解决小明对数位中含有2、0、1、8的数字很感兴趣,在1到40中这样的数包括1、2、

题目:

小明对数位中含有 2、0、1、9的数字很感兴趣,在 1 到 40 中这样的数包括 1、2、9、10至 32、39和 40,共 28 个,他们的和是 574,平方和是 14362。

注意,平方和是指将每个数分别平方后求和。

请问,在 1 到 2019 中,所有这样的数的平方和是多少?
方法一:原始野人方法(没错,就是判断每一位是否含有2019)

  1. public class Test1 {
  2. public static void main(String[] args) {
  3. double result = 0;
  4. for (int i = 0; i <=2019; i++) {
  5. if (i > 999) {
  6. if ((i % 10 == 0) || (i % 10 == 1) || (i % 10 == 2) || (i % 10 == 9) ||
  7. (i % 100 / 10 == 0) || (i % 100 / 10 == 1) || (i % 100 / 10 == 2) || (i % 100 / 10 == 9) ||
  8. (i % 1000 / 100 == 0) || (i % 1000 / 100 == 1) || (i % 1000 / 100 == 2) || (i % 1000 / 100 == 9) ||
  9. (i / 1000 == 0) || (i / 1000 == 1) || (i / 1000 == 2) || (i / 1000 == 9)) {
  10. result += i * i;
  11. }
  12. } else if (i > 99) {
  13. if ((i % 10 == 0) || (i % 10 == 1) || (i % 10 == 2) || (i % 10 == 9) ||
  14. (i % 100 / 10 == 0) || (i % 100 / 10 == 1) || (i % 100 / 10 == 2) || (i % 100 / 10 == 9) ||
  15. (i / 100 == 0) || (i / 100 == 1) || (i / 100 == 2) || (i / 100 == 9)) {
  16. result += i * i;
  17. }
  18. } else if (i > 9) {
  19. if ((i % 10 == 0) || (i % 10 == 1) || (i % 10 == 2) || (i % 10 == 9) ||
  20. (i / 10 == 0) || (i / 10 == 1) || (i / 10 == 2) || (i / 10 == 9)) {
  21. result += i * i;
  22. }
  23. } else {
  24. if (i == 0 || i == 1 || i == 2 || i == 9) {
  25. result += i * i;
  26. }
  27. }
  28. }
  29. System.out.println(result);
  30. }
  31. }

方法二:比较巧妙

  1. public class Test1Way2 {
  2. public static void main(String[] args) {
  3. double result = 0;
  4. for (int i = 0; i <= 2019; i++) {
  5. if (check(i)) {
  6. result += i * i;
  7. }
  8. }
  9. System.out.println(result);
  10. }
  11. public static boolean check(int number) {
  12. String a = number + " ";
  13. if (a.contains("0") || a.contains("1") || a.contains("2") || a.contains("9")) {
  14. return true;
  15. } else {
  16. return false;
  17. }
  18. }
  19. }

方法三:算法利器Python

  1. # @Author:wanhailin
  2. # @Software:PyCharm
  3. # 小明对数位中含有 2、0、1、9的数字很感兴趣,在 1 到 40 中这样的数包括 1、2、9、10至 32、39和 40,共 28 个,他们的和是 574,平方和是 14362。
  4. # 注意,平方和是指将每个数分别平方后求和。
  5. # 请问,在 1 到 2019 中,所有这样的数的平方和是多少?
  6. sum = 0
  7. for i in range(0, 2019):
  8. s = str(i)
  9. if '2' in s or '0' in s or '1' in s or '9' in s:
  10. sum += i * i
  11. print(sum)

最后结果为:2654341492或者2.658417853E9

欢迎评论区留言交流、指正不足。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/302927?site
推荐阅读
相关标签
  

闽ICP备14008679号