4319: 小猫分鱼(GESP 23年12月 3级 第一题)

题目描述

海滩上有一堆鱼, 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;
}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值