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$ 条。
编写程序,输入小猫的数量$N$ 以及每次扔到海里的鱼的数量$i$ ,输出海滩上最少的鱼数,使得每只小猫都可吃到鱼。
例如:两只小猫来分鱼$N=2$ ,每次扔掉鱼的数量为$i-1$ ,为了每只小猫都可吃到鱼,可令第二只小猫需要拿走$1$条鱼,则此时待分配的有$3$条鱼。第一只小猫待分配的鱼有$3×2+1=7$ 条。
输入
总共 2 行。第一行一个整数$N$ ,第二行一个整数$i$。
保证$0 < N< 10$ ;$i < N$ 。
保证$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;
}