赞
踩
小明对数位中含有2、0、1、9的数字很感兴趣(不包括前导0),在1到40中这样的数包括1、2、9、10至32、39和40,共28个,他们的和是574。 请问,在1到n中,所有这样的数的和是多少?
【输入格式】输入一行包含两个整数 n。
【输出格式】输出一行,包含一个整数,表示满足条件的数的和。
【样例输入】40
【样例输出】574
只要从1到n中,找到包含“1”,“2”,“9”,“0”这样的数,把他们全部加起来,就可以了
写法一:
public class Main { static List<Integer> list = new ArrayList<Integer>(); public static void main(String[] args) { Scanner input = new Scanner(System.in); int n = input.nextInt(); long sum = 0; SearchNum(n); for (int i : list) { sum += i; } System.out.println(sum); } static public void SearchNum(int n) { for (int i = 1; i <= n; i++) { int tempI = i; while (tempI != 0) { int temp = tempI % 10; if (temp == 1 || temp == 2 || temp == 9 || temp == 0) { list.add(i); break; } tempI /= 10; } } System.out.println(list); } }
写法二:改进
public class 特别数的和 { public static void main(String[] args) { Scanner input = new Scanner(System.in); int n = input.nextInt(); long sum = 0; for (int i = 1; i <= n; i++) { int tempI = i; while (tempI != 0) { int temp = tempI % 10; if (temp == 1 || temp == 2 || temp == 9 || temp == 0) { sum += i; break; } tempI /= 10; } } System.out.println(sum); } }
能够做出来的就慢慢做,尽量优化。不要想的太复杂,相信自己能解决。
end.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。