0
点赞
收藏
分享

微信扫一扫

蓝桥杯 特别数的和(JAVA)

陆佃 2022-01-27 阅读 57

题目描述

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

请问,在 1 到 n 中,所有这样的数的和是多少?

输入描述

输入格式:

输入一行包含两个整数 n(1≤n≤10^4)。

输出描述

输出一行,包含一个整数,表示满足条件的数的和。

输入输出样例

示例

40

574

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

题目要求

(1)数中包含2、0、1、9

(2)对符合的数求和

题解一

import java.util.*;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	    Scanner scan=new Scanner(System.in);
	    Integer n=scan.nextInt();
	    scan.close();
	    Integer j=0;
	    Integer account=0;
	    for(int i=1;i<=n;i++) {
	    	j=i;
	    	while(j>0) {
	    		if(j%10==2||j%10==0||j%10==1||j%10==9) {
	    			account+=i;
	    			break;
	    		}
	    		j/=10;
	    	}
	    }
	    System.out.println(account);
	}
		
		
}

       这一做法是吸取了之前做题的经验,可以通过一个while循环+MOD的方法判断数中是否含有某个数。

题解二

       可以将数字转为字符串,java中有很好用的字符串处理工具。

import java.util.*;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	    Scanner scan=new Scanner(System.in);
	    Integer n=scan.nextInt();
	    scan.close();
	    Integer account=0;
	    for(int i=1;i<=n;i++) {
	    	if(String.valueOf(i).contains("2")
	    	   ||String.valueOf(i).contains("0")
	    	   ||String.valueOf(i).contains("1")
	    	   ||String.valueOf(i).contains("9"))
	    	   account+=i;
	    	
	    }
	    System.out.println(account);
	}
		
		
}

收获

       从这题中,主要学习到了如何判断一个数中是否含有某些特定的数。可以用MOD,也可以转为字符串处理。

举报

相关推荐

0 条评论