题目描述

有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
输入

输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表示小张手上的空汽水瓶数。n=0表示输入结束,你的程序不应当处理这一行。
输出

对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。
样例输入

3
10
81
0

样例输出

1
5
40

源代码:

  1. #include<iostream>
  2. using namespace std;
  3. int result = 0;
  4. int change(int num)
  5. {
  6. if (num <=1) return result;
  7. else if (num < 3)
  8. {
  9. result = result + 1;
  10. return result;
  11. }
  12. else if (num >= 3)
  13. {
  14. int tmp = num / 3;//一次兑换的瓶子
  15. int rest = num % 3;//兑换剩下的瓶子
  16. result = result + tmp;
  17. rest = rest + tmp;
  18. change(rest);
  19. }
  20. }
  21. int main()
  22. {
  23. int n;
  24. cin >> n;
  25. int a[100];
  26. a[0] = n;
  27. int i = 1;
  28. while (1)
  29. {
  30. if (n != 0)
  31. {
  32. cin >> n;
  33. a[i] = n;
  34. i++;
  35. }
  36. else
  37. break;
  38. }
  39. for (int j = 0; j < i; j++)
  40. {
  41. if (a[j] != 0)
  42. {
  43. int sum = change(a[j]);
  44. cout << sum << endl;
  45. result = 0;
  46. }
  47. }
  48. return 0;
  49. }
点赞(0)
 

9.9 分

1 人评分

 

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论