今天带给大家的是两道有趣的小游戏:买汽水和猜凶手
此处介绍两种方法
直接利用循环,直到剩余的空瓶子个数小于2
int main()
{
int money = 0;
scanf("%d", &money);
int total = money;
int empty = money;
while (empty >= 2)
{
total += empty / 2;
empty = empty / 2 + empty % 2;
}
printf("%d\n", total);
return 0;
}
其实我们可以总结出一定的数学规律:
钱数和总瓶数存在
total = 2 * money - 1
这样的关系
int main()
{
int money = 0;
scanf("%d", &money);
int total = 0;
if (money > 0)
total = 2 * money - 1;
printf("%d\n", total);
return 0;
}
或者,我们从价值交换的角度去理解这道题,
20块钱,能换到40个空瓶,但最后到手的其实是39瓶,因为最后一瓶是换不到的,这种思路大家可以琢磨一下。
这道题可以取巧的地方是:
字符a、b、c、d直接对应四个人,并且因为他们的ASCII码值是连续的,所以可以直接使用循环遍历a、b、c、d
int main()
{
char killer = 0;
for (killer = 'a'; killer <= 'd'; killer++)
{
if ((killer !='a') + (killer =='c') + (killer=='d') + (killer!='d') == 3)
{
printf("killer = %c\n", killer);
}
}
return 0;
}
提示:
其实这种逻辑推理题,只要把最终结果所需满足的真假情况找出来即可,至于推理过程交给电脑即可。
给大家介绍一道同类题,大家可以练练手~
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
这两道题不仅有趣,还需要一定的思考,怎么样,是不是感觉用代码解决日常生后中的问题很有趣啊,我们下期见!