华为OJ——(练习用)挑7

来源:互联网 发布:简述分组转发算法 编辑:程序博客网 时间:2024/05/22 08:09

题目描述

输出7有关数字的个数,包括7的倍数,还有包含7的数字(如17,27,37...70,71,72,73...)的个数


输入描述:

一个正整数N。(N不大于30000)

输出描述:

不大于N的与7有关的数字个数,例如输入20,与7有关的数字包括7,14,17.

输入例子:
20
输出例子:
3

两种思路:

1、依次遍历要检测数的每个位上的数字,如果包含7就符合要求

2、把要检测的数变成字符串,如果包含7的话就符合要求

方法一:

import java.util.*;public class Main{public static void main(String[] args) {Scanner scan=new Scanner(System.in);while(scan.hasNext()){int N=scan.nextInt();int count=0;for(int i=1;i<=N;i++){int muber=i;if(muber%7==0){//7的倍数符合要求count++;   }else{//依次遍历要检测数的每个数字,如果包含7就符合要求while(muber>0){if(muber%10==7){ count++; muber/=10; break; //这里一定要加break,一个数字,一旦有一个7,立马退出循环,查下个数 }elsemuber/=10;}}}System.out.println(count);}}}
方法二:

import java.util.*;public class Main{public static void main(String[] args) {Scanner scan=new Scanner(System.in);while(scan.hasNext()){Integer N=scan.nextInt();int count=0;for(Integer i=1;i<=N;i++){if(i%7==0) //7的整数倍自然是对的count++; //把要检测的数变成字符串,如果包含7的话也符合要求else if(i.toString().contains("7")) count++;}System.out.println(count);}}}





0 0