AT_arc060_b [ABC044D] 桁和

题目描述

对于 $2$ 以上的整数 $b$ 以及 $1$ 以上的整数 $n$,定义函数 $f(b,n)$ 如下: - 当 $n < b$ 时,$f(b,n) = n$; - 当 $n \geq b$ 时,$f(b,n) = f(b,\,\mathrm{floor}(n / b)) + (n \bmod b)$。 这里,$\mathrm{floor}(n / b)$ 表示不超过 $n / b$ 的最大整数,$n \bmod b$ 表示 $n$ 除以 $b$ 的余数。 直观来说,$f(b,n)$ 就是将 $n$ 用 $b$ 进制表示时各位数字之和。例如: - $f(10,\,87654) = 8 + 7 + 6 + 5 + 4 = 30$; - $f(100,\,87654) = 8 + 76 + 54 = 138$。 给定整数 $n$ 和 $s$。请判断是否存在 $2$ 以上的整数 $b$ 使得 $f(b,n) = s$。如果存在,请求出满足条件的最小 $b$。

输入格式

输入以如下格式从标准输入读入: > $n$ $s$

输出格式

如果存在 $2$ 以上的整数 $b$ 满足 $f(b,n) = s$,请输出最小的这样的 $b$。如果不存在,请输出 `-1`。

说明/提示

### 限制条件 - $1 \leq n \leq 10^{11}$ - $1 \leq s \leq 10^{11}$ - $n,\,s$ 均为整数。 由 ChatGPT 4.1 翻译