CF121C Lucky Permutation
题目描述
Petya 喜欢幸运数字。众所周知,幸运数字是指其十进制表示中只包含幸运数字 $4$ 和 $7$ 的正整数。例如,$47$、$744$、$4$ 是幸运数字,而 $5$、$17$、$467$ 不是。
有一天,Petya 梦见了从 $1$ 到 $n$ 的整数的字典序第 $k$ 个排列。请你计算在该排列中,有多少个位置的下标 $i$ 和排列中第 $i$ 个数 $a_i$ 都是幸运数字。
输入格式
第一行包含两个整数 $n$ 和 $k$,$(1 \leq n, k \leq 10^{9})$,分别表示排列中元素的个数和排列的字典序编号。
输出格式
如果从 $1$ 到 $n$ 的数的第 $k$ 个排列不存在,输出一个数字 $-1$。否则,输出满足条件的位置数量:即有多少个下标 $i$,使得 $i$ 和 $a_i$ 都是幸运数字。
说明/提示
排列是 $n$ 个元素的有序集合,其中每个整数 $1$ 到 $n$ 恰好出现一次。排列中第 $i$ 个位置的元素记为 $a_i$($1 \leq i \leq n$)。如果存在某个 $i$($1 \leq i \leq n$),使得 $a_i < b_i$,且对于任意 $j$($1 \leq j < i$)都有 $a_j = b_j$,则排列 $a$ 的字典序小于排列 $b$。我们将所有可能的 $n$ 元素排列按字典序升序排列,字典序第 $k$ 个排列就是排列列表中的第 $k$ 个元素。
在第一个样例中,排列为:
1 2 3 4 6 7 5
唯一满足条件的位置是 $4$。
在第二个样例中,排列为:
2 1 3 4
唯一满足条件的位置是 $4$。
由 ChatGPT 4.1 翻译