Problem: HJ22 汽水瓶
题目描述
描述
某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。
小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。
数据范围:输入的正整数满足
输入描述:
输入文件最多包含 10 组测试数据,每个数据占一行,仅包含一个正整数 n( 1<=n<=100 ),表示小张手上的空汽水瓶数。n=0 表示输入结束,你的程序不应当处理这一行。
输出描述:
对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。
示例1
输入:
3
10
81
0
输出:1
5
40
解题思路
输入的数字除2,因为2 + 1(借的)- 1(兑换一瓶水,产生一个空瓶还回去)
算法流程
- 读取整数:
int num = in.nextInt();
这行代码使用nextInt()方法从Scanner对象中读取下一个整数,并将其赋值给变量num。- 判断条件并输出:
if ((num / 2) != 0) System.out.println(num / 2);
这行代码判断num除以2的余数是否不等于0,如果不等于0,则输出num除以2的结果。- 循环继续:循环回到第5步,继续读取下一个整数并进行判断和输出,直到没有更多的整数输入。
代码
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int num = in.nextInt();
if ((num / 2) != 0) System.out.println(num / 2);
}
}
}
复杂度
- 时间复杂度:
添加时间复杂度, 示例:
- 只与输入的数有关
- 空间复杂度:
添加空间复杂度, 示例:
- 常数额外空间