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; }