首页 > 试题广场 >

幸运数字

[编程题]幸运数字
  • 热度指数:2872 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

小雅同学认为6,8是她的幸运数字,而其他数字均不是,一个幸运数是指在十进制表示下只含有幸运数字的数。给定你一个区间(a,b)a和b之间(其中包括a和b幸)运数的个数。


输入描述:
输入两个整数a和b,a的取值范围在1和1000000000之间(其中包括1和1000000000),b的取值范围在a和1000000000之间(其中包括a和1000000000)。


输出描述:
返回a和b之间的幸运数个数,如果入参不合法,请输出-1
示例1

输入

1 10

输出

2

说明

6,8,6666,88888,6668888,68686688均为幸运数字,当a=1,b=10函数返回值为2。
使用二叉树。
如果当前数大于b的值,就直接返回到上一级的node。
否则继续往数字尾部加6和8,然后检查数字符不符合条件。

import java.util.Scanner;

public class Main {

    public static int count = 0;

    public static void Btree(int pre, int a, int b) {
        if (pre > b) {
            return;
        } else {
            if (pre >= a && pre <= b) {
                count++;
            }
            Btree(pre * 10 + 6, a, b);
            Btree(pre * 10 + 8, a, b);
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        Btree(0, a, b);
        System.out.println(count);
        sc.close();
    }

}
发表于 2019-01-23 10:19:07 回复(0)

问题信息

上传者:小小
难度:
1条回答 6325浏览

热门推荐

通过挑战的用户

查看代码