题目描述
输出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,立马退出循环,查下个数 } else muber/=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); } } }
时间: 2024-10-12 14:53:41