有N个可爱的小猴子,有一天,妈妈摘了M个桃子,可是怎么分都分不平均。于是妈妈偷偷地把桃子藏了起来,准备第二天再想办法。可是孩子们到了晚上,纷纷去偷吃。第一只猴子去的时候发现把桃子分成N份相等的量,会剩下1(注:是数字1不是字母l,下同)个桃子,于是拿走了自己的一份,并把多余的1个桃子也拿走了。第二只猴子去的时候发现平分成N份时会剩下2个桃子,于是拿走了自己的一份,并把多余的2个桃子也拿走了……第K只猴子去的时候发现平分成N份时会剩下K个桃子,于是拿走了自己的一份,并把多余的K个桃子也拿走了,第K+1只猴子去的时候发现平分成N份后只剩下1个桃子,于是拿走了自己的一份,并拿走了多余的1个桃子,第K+2只猴子去的时候发现平分成N份后剩下2个桃子,于是拿走了自己的一份,并拿走了多余的2个桃子……如此K个一循环。第N个猴子去的时候,把剩下的桃子(至少一个)全都吃了。试问M至少是多少? 任务:输入正整数N,K(K< N),求出最小的正整数M,桃子不能分割。
输入描述
输入仅包含一行,包括两个用空格隔开的正整数N,K.
输出描述
输出一个正整数,表示最小的M,答案有可能超过264(2的64次方).
样例1
输入
4 3
输出
73
提示
30%的数据满足,0 < K < N < 12; 另外15%的数据满足,K+1=N; 100%的数据满足,0 < K < N < 100.
#include <bits/stdc++.h>
using namespace std;
int main() {
long long n, k;
cin>>n>>k;
long long ans = k + 1;
while (true) {
long long temp = ans;
for (int i = 0; i < n; i++) {
if (temp % n == k) {
temp = temp / n * (n - 1);
} else {
break;
}
if (i == n - 1) {
cout << ans << endl;
return 0;
}
}
ans++;
}
return 0;
}