Skip to content

L1-033 出生年

img

以上是新浪微博中一奇葩贴:“我出生于 1988 年,直到 25 岁才遇到 4 个数字都不相同的年份。”也就是说,直到 2013 年才达到“4 个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不相同的年份”这句话。

输入格式:

输入在一行中给出出生年份y和目标年份中不同数字的个数n,其中y在[1, 3000]之间,n可以是 2、或 3、或 4。注意不足 4 位的年份要在前面补零,例如公元 1 年被认为是 0001 年,有 2 个不同的数字 0 和 1。

输出格式:

根据输入,输出x和能达到要求的年份。数字间以 1 个空格分隔,行首尾不得有多余空格。年份要按 4 位输出。注意:所谓“n个数字都不相同”是指不同的数字正好是n个。如“2013”被视为满足“4 位数字都不同”的条件,但不被视为满足 2 位或 3 位数字不同的条件。

输入样例 1:

tex
1988 4
1988 4

输出样例 1:

tex
25 2013
25 2013

输入样例 2:

1 2
1 2

输出样例 2:

0 0001
0 0001

Solution:

java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String[] input = in.readLine().split(" ");
        int y = Integer.parseInt(input[0]);
        int n = Integer.parseInt(input[1]);
        Set<Character> set = new HashSet<>();
        for (int i = y; ; i++) {
            char[] chars = String.format("%04d", i).toCharArray();
            for (char aChar : chars) {
                set.add(aChar);
            }
            if (set.size() == n) {
                System.out.printf("%d %04d", i - y, i);
                break;
            }
            set.clear();
        }
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String[] input = in.readLine().split(" ");
        int y = Integer.parseInt(input[0]);
        int n = Integer.parseInt(input[1]);
        Set<Character> set = new HashSet<>();
        for (int i = y; ; i++) {
            char[] chars = String.format("%04d", i).toCharArray();
            for (char aChar : chars) {
                set.add(aChar);
            }
            if (set.size() == n) {
                System.out.printf("%d %04d", i - y, i);
                break;
            }
            set.clear();
        }
    }
}

Released under the MIT License.