小猫分鱼 时间限制:1.0 s 内存限制:128.0 MB 问题描述 海滩上有一堆鱼,N只小猫来分。第一只小猫把这堆鱼平均分为N份,多了i<N个,这只小猫把多的i个扔入海中,拿走了一份。第二只小猫接着把剩下的鱼平均分成N份,又多了i个,小猫同样把多的i个扔入海中,拿走了一份。第三、第四、……,第N只小猫仍是最终剩下的鱼分成N份,扔掉多了的i个,并拿走一份。 编写程序,输入小猫的数量 以及每次扔到海里的鱼的数量i,输出海滩上最少的鱼数,使得每只小猫都可吃到鱼。 例如:两只小猫来分鱼N=2,每次扔掉鱼的数量为i=1,为了每只小猫都可吃到鱼,可令第二只小猫需要拿走1条鱼,则此时待分配的有3条鱼。第一只小猫待分配的鱼有3*2+1=7条。 输入描述 总共 2 行。第一行一个整数N,第二行一个整数i。 保证0<N<10;i<N 。 输出描述 一行一个整数,表示满足要求的海滩上最少的鱼数。 特别提醒 在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。 样例输入1 2 1 样例输出1 7 样例输入2 3 1 样例输出2 25 样例解释2 三只小猫来分鱼N=3,每次扔掉鱼的数量为i=1,为了每只小猫都可吃到鱼,可令第三只小猫需要拿走3条鱼(拿走1条和2条不满足要求),则此时待分配的有10条鱼。第二只小猫待分配的鱼有10×3/2+1=16条。第一只小猫待分配的鱼有16×3/2+1=25条。
正确答案:参考程序(Python):小猫分鱼。逆推:最后一只拿走x条,反推第N只前有x*N+i条...递推验证每步整除。用大数从后往前求最小。样例N=3,i=1→25。核心:逆向递推分鱼。
试卷来源:202312 CCF-GESP编程能力等级认证Python三级真题