在线测试本题
K操作(第二套)
给你
x
,
y
,
k
x, y, k
x,y,k 三个正整数,每次可以选择以下操作之一:
- x = x − 1 x = x - 1 x=x−1
-
x
=
x
/
k
x = x / k
x=x/k 当且仅当
x
%
k
=
=
0
x \% k == 0
x%k==0
请问你将 x x x 变为 y y y 的最小操作次数。
输入
三个正整数 1 ≤ x , y , k ≤ 1 0 9 1 \leq x, y, k \leq 10^9 1≤x,y,k≤109
输出
一行一个正整数,表示最小操作次数
输入
10 4 2
输出
2
题解
一个显然的思路是:能除k就除k。因为除法不会差于减一操作。所以在x%k!=0的时候,我们可以直接减去x%k的值,反之,我们可以直接除以k。
但是当x//k<y的时候,我们就不能直接除以k了,因为这样会导致x<y,所以我们只能减去x-y的值。
这里在注意一点,当k=1的时候,我们只能减一,因为除一是没有意义的。会导致死循环
代码见网站内部(文章顶部):塔子哥的文字题解