#蓝桥#JAVA#好数
问题描述
一个整数如果按从低位到高位的顺序,奇数位 (个位、百位、万位 ⋯⋯ ) 上的数字是奇数,偶数位 (十位、千位、十万位 ⋯⋯ ) 上的数字是偶数,我们就称之为 “好数”。
给定一个正整数 N,请计算从 1 到 N 一共有多少个好数。
解题思路:
题目分析得出奇数位上的值为奇数,偶数位上的值为偶数,那么这个数就是“好数”,换句话,这道题考的是奇偶交替。
我们需要对从1开始到N的N位值进行好数分析,为节约时间,我们将好数分析凝练成方法 ,在main方法中使用好数方法来判断
好数方法需要考虑奇偶位,奇偶位上的数值奇偶判断,奇偶位单独设置、该数的最小位的值获取,并判断
main方法需要考虑获取数值N,循环n次,每次值进行好数判断,为好数的结果累加。
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static int pr(int a){int x = 1;//表明x为奇偶位while(a != 0){int t = a %10;//t是当前数的最小位上的值if(x %2 ==1){//x为奇数位if(t % 2 ==0)return 0;//奇数位上的数不是奇数,返回0}else{ //x为偶数位if(t % 2 == 1)return 0;//偶位上的数是奇数,返回0 }x++;//奇偶位转换a /= 10;//该数缩小一位}return 1;//循环结束,标志着该数符合好数原则,返回1}public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...int n = scan.nextInt();int count = 0;//好数的个数for(int i = 1;i <= n;i++){//从1开始到n循环if(pr(i) == 1){//判断某数是否为好数count++;//为好数,好数个数+1}}System.out.println(count);scan.close();}
}