题目描述
海滩上有一堆鱼, 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;
输出格式
一行一个整数,表示满足要求的海滩上最少的鱼数。
样例输入content_copy
2
1
样例输出content_copy
7
提示/说明
样例解释2:
三只小猫来分鱼N=3,每次扔掉鱼的数量为i=1 ,为了每只小猫都可吃到鱼,可令第三只小猫需要拿走3条鱼(拿 走1条和2条不满足要求),则此时待分配的有10条鱼。第二只小猫待分配的鱼有10*3/2+1=16 条。第一只小猫 待分配的鱼有16*3/2+1=25 条。
#include <bits/stdc++.h>
using namespace std;
int n,i;
int flag1;
int main() {
cin>>n>>i;
for(int f=1;;f++){
flag1=0;
int k=n*f+i;
for(int l=2;l<=n;l++){
k=k*n/(n-1)+i;
if(k%n==0||(k-i)%n!=0){
flag1=1;
break;
}
}
if(flag1==1)continue;
else{
cout<<k;
break;
}
}
return 0;
}