首页 > 试题广场 >

六位数

[编程题]六位数
  • 热度指数:2815 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

小团想要编写一个程序,希望可以统计在MN之间(M<N,且包含MN)有多少个六位数ABCDEF满足以下要求:

(1) ABCDEF这六个数字均不相同,即ABCDEF表示六个不同的数字。

(2) AB+CD=EF。即将这个六位数拆成三个两位数,使得第1个和第2个两位数的和等于第3个两位数。


数据范围:
进阶:时间复杂度,空间复杂度

输入描述:

单组输入。

输入两个六位正整数M和N(M



输出描述:

输出在M到N之间(包含M和N)满足要求的六位数的个数。

示例1

输入

100000 110000

输出

0
public static void main(String[] args) {
        int size = 0;
        Scanner scanner = new Scanner(System.in);
        int small = scanner.nextInt();
        int big = scanner.nextInt();
        HashSet set = new HashSet();
        for (int i = small; i <=big ; i++) {

            int A = i/100000;
            int B = (i % 100000)/10000;
            int C = (i % 10000)/1000;
            int D = (i % 1000)/100;
            int E = (i % 100)/10;
            int F = i % 10;
            set.add(A);
            set.add(B);
            set.add(C);
            set.add(D);
            set.add(E);
            set.add(F);
            int AB = A*10 +B;
            int CD= C*10 +D;
            int EF = E*10 +F;
            if (set.size() == 6 && (AB+CD) == EF){
                size++;
            }
            set.clear();

        }
        System.out.println(size);
    }
关键一点就是想到用 set,如果有重复的,那就长度小于6,长度等于6就可以了。最后清空set,再次判断。
发表于 2022-03-22 14:34:30 回复(0)