站外题求助!谢谢
  • 板块灌水区
  • 楼主kissu
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/9/2 20:49
  • 上次更新2023/11/2 23:47:33
查看原帖
站外题求助!谢谢
775415
kissu楼主2023/9/2 20:49

题意

有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;
}
2023/9/2 20:49
加载中...