好数
- 问题描述
- 代码解释
- 代码
好数
问题描述
一个整数如果按从低位到高位的顺序,奇数位 (个位、百位、万位 ⋯ ) 上的数字是奇数,偶数位 (十位、千位、十万位 ⋯ ) 上的数字是偶数,我们就称之为 “好数”。
给定一个正整数 N,请计算从 1 到 N 一共有多少个好数。
输入格式
一个整数 N。
输出格式
一个整数代表答案。
样例输入 1
24
样例输出 1
7
样例输入 2
2024
样例输出 2
150
样例说明
对于第一个样例,24 以内的好数有 1、3、5、7、9、21、23,一共 7 个
评测用例规模与约定
对于 10% 的评测用例,1≤N≤100
对于 100% 的评测用例,1≤N≤10 7
代码解释
good函数:该函数用于判断一个数是否为好数。通过逐位检查,奇数位必须为奇数,偶数位必须为偶数。若某位不符合条件,立即返回0,否则返回1。
主函数:读取输入N,遍历从1到N的每个数,调用good函数检查是否为好数,统计符合条件的好数个数并输出。
该方法虽然简单,但在给定的问题规模下能够高效完成任务
代码
import java.util.Scanner;public class Main {public static int good(int a){int t=1;while(a!=0){int x=a%10;if(t%2==1){if(x%2==0)return 0;}else{if(x%2==1)return 0;}a/=10;t++;}return 1;}public static void main(String[] args){Scanner sc=new Scanner(System.in);int n=sc.nextInt();//n<=10^7int count=0;for(int i=1;i<=n;i++){if(good(i)==1){count++;}}System.out.println(count);}
}