海盗比酒量
有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复…… 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第4瓶酒平分喝下后,大家都倒下了。
等船长醒来,发现海盗船搁浅了。他在航海日志中写到:“……昨天,我正好喝了一瓶…….奉劝大家,开船不喝酒,喝酒别开船……”
请你根据这些信息,如果有多个可能的答案,请列出所有答案,每个答案占一行。
格式是:人数,人数,…
例如,有一种可能是:20,5,4,2,0
思路:4次之后船长喝了1瓶,每一次喝的量都是一个分数,4次之和为1
答案:12, 6, 4, 2, 0
15, 10, 3, 2, 0
18, 9, 3, 2, 0
第二次看这个题目,第一次看的时候有点懵逼,多少人都可以啊,又没给出每个人的酒量啊,怎么算呦···
但是现在毕竟是要做题目的,开始挖掘题目信息,终于发现解题关键:
等船长醒来,发现海盗船搁浅了。他在航海日志中写到:“……昨天,我正好喝了一瓶…….奉劝大家,开船不喝酒,喝酒别开船……”
船长喝了一瓶哎!所以!
先看看有多少种(sum是4),然后上代码!
#include<iostream>
using namespace std;
int book[10];
int main(){
int a,b,c,d,e,k,sum = 0;;
for(a = 20;a >= 1;a--)
for(b = a-1;b >= 1;b--)
for(c = b-1;c >= 1;c--)
for(d = c-1;d >= 1;d--)
if(a*b*c*d == b*c*d+a*b*c+c*d*a+d*a*b)
//sum++;
cout << a << ' ' << b << ' ' << c << ' ' << d << ' ' << '0' << endl;
//cout << sum << endl;
return 0;
}