#CYF0043. 找最大的 x

找最大的 x

题目背景

C 今天学习了关于阶乘和倍数有关的知识。

  • 阶乘用 !! 表示,yy 的阶乘用递归表示为 y!=y(y1)!y! = y * (y - 1)! ,特殊的 0!=10! = 15!=543210!=1205! = 5 * 4 * 3 * 2 * 1 * 0! = 120​ 。

  • 倍数:如果有两个正整数 aabb ,存在一个正整数 cc ,使得 a=bca = b * c 成立,那么我们就可以说 aabb 的倍数。换句话说:一个整数能够被另一个整数整除,这个整数就是另一整数的倍数。

题目描述

现在给定一个 kk ,寻找到一个最大的 xx ,满足一下条件:

  • 1x<k1 \leq x < k

  • x!+(x1)!x! + (x - 1)!kk 的倍数。

输入格式

输入一行。

一行输入一个正整数 kk

输出格式

输出一行。

一行输出一个符合题意的答案,如果没有输出 1-1

样例 #1

样例输入 #1

8

样例输出 #1

7

提示

样例解释】:

  • 对于第一组样例,7!+6!=5040+720=57607! + 6! = 5040 + 720 = 5760 ,该结果是 88 的倍数。

数据范围】:

测试点编号 xx \geq xx \leq
01 ~ 10 22 10510^5
11 ~ 15 10910^9
16 ~ 20 101810^{18}

对于 100%100\% 的数据,保证 2x10182 \leq x \leq 10^{18}​​ 。