1 条题解
-
0
解题思路
- 输入处理:
- 持续读取椰子数量
num,直到输入-1结束。
- 持续读取椰子数量
- 条件判断函数
test:- 函数接收椰子数
n和人数p作为参数。 - 模拟分椰子过程:进行
p轮操作,每轮要求椰子数n除以p余 1,分完后剩余(n - 1) / p * (p - 1)个椰子。 - 最后检查剩余椰子数能否被
p整除,若都满足则返回true,否则返回false。
- 函数接收椰子数
- 寻找合适人数:
- 对于每个输入的椰子数
num,从num开始递减尝试不同人数st,调用test函数进行判断。
- 对于每个输入的椰子数
- 输出结果:
- 若找到合适的人数
st,输出椰子数、人数和 1 只猴子的信息。 - 若未找到合适人数(
st为 0),输出无解信息。
- 若找到合适的人数
#include<iostream> #include<cstring> using namespace std; int num, person; bool test(int n, int p){ for(int i = 0; i < p; i++){ if(n%p!=1) return 0; n = (n-1)/p*(p-1); } return n%p==0; } int main(){ test(25,3); while(cin>>num&&num!=-1){ int st = num; while(st>0&&test(num,st)==0) st--; if(st==0) cout << num << " coconuts, no solution" << endl; else cout << num << " coconuts, " << st << " people and 1 monkey" << endl; } } - 输入处理:
- 1
信息
- ID
- 310
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者