void main()
{
int i,j,k,l
for(i=20i>=4i--) //至少要有4人才可以喝到第4轮 单人不超1瓶
for(j=i-1j>1j--)//每轮至少要倒下1个(i-1),至少乘下1人以上(j>1)
{
if(i+j>=i*j)continue//前两轮喝到1瓶的舍去
for(k=j-1k>1k--)
{
if(i*j+j*k+k*i>=i*j*k)continue////前三轮喝到1瓶的舍去
for(l=k-1l>1l--)
{
if(j*k*l + i*k*l + i*j*l + i*j*k == i*j*k*l) //分数等式 求整数解,避免用浮点数
printf("%d %d %d %d\n",i,j,k,l)
}
}
}
}
///////////
20 5 4 2
18 9 3 2
15 10 3 2
12 6 4 2
此题显然有误——
当n取1或2时能找到比1、2小的素数m吗?
当n取3时,比3小的素数只有2一个,喝3杯后肯定没有人喝到5杯,出不了结果,还要继续喝下去,但得换一个“以前没有用过的素数m”,只有一个2,再换换谁呢?
当n取5时,提问者可以自行演绎一下,同样存在2所指出的问题。
这题也很毛糙,如“将第一个喝到5杯酒的人指出来”——假设没有上述错误,按照题设规则,难道还会有第二个、第三个……喝到5杯的人吗?不可能啊,只要有人喝到5杯了游戏立马就结束了!
#include<stdio.h>#include<string.h>
int main()
{
char sex[5]
int age
printf("请输入性别和年龄")
scanf("%d",&age)
scanf("%s",sex)
if(age>20)
{
printf("可以喝酒!")
}
else if(age>18 &&strcmp(sex,"男") ==0)
{
printf("可以喝酒!")
}
else
printf("喝饮料!")
return 0
}
你试试对不对