4594: 【GESP2312三级】小猫分鱼

内存限制:64 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

海滩上有⼀堆鱼, $N$只小猫来分。第一只小猫把这堆鱼平均分为$N$ 份,多了$i< N$ 个,这只小猫把多的$i$ 个扔入海中,拿走了一份。第二只小猫接着把剩下的鱼平均分成$N$ 份,又多了$i$ 个,小猫同样把多的$i$ 个扔入海中,拿走了一份。第三、第四、……,第$N$ 只小猫仍是最终剩下的鱼分成$N$ 份,扔掉多了的$i$ 个,并拿走一份。
编写程序,输入小猫的数量$N$ 以及每次扔到海里的鱼的数量$i$ ,输出海滩上最少的鱼数,使得每只小猫都可吃到鱼。
例如:两只小猫来分鱼$N=2$ ,每次扔掉鱼的数量为$i-1$ ,为了每只小猫都可吃到鱼,可令第二只小猫需要拿走$1$条鱼,则此时待分配的有$3$条鱼。第一只小猫待分配的鱼有$3×2+1=7$ 条。

输入

总共 2 行。第一行一个整数$N$ ,第二行一个整数$i$。
保证$0 < N< 10$ ;$i < N$ 。

输出

一行一个整数,表示满足要求的海滩上最少的鱼数。

样例输入 复制

2
1

样例输出 复制

7

提示

#include<bits/stdc++.h>
using namespace std;
int main(){
    long long n, i, j, k, ans;
    bool flag;
    scanf("%lld%lld", &n, &i);
    k = 1;
    while(true){
        flag = true;
        ans = k*n+i;
        for(j=1; j<n; j++){
            if(ans%(n-1) != 0){
                flag = false;
                break;
			}
            ans = ans / (n-1) *n + i;
		}
        if(flag) break;
        k++;
    }
    printf("%lld\n", ans);
    return 0;
}