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 翻译