某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。
小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。
数据范围:输入的正整数满足1≤n≤100
注意:本题存在多组输入。输入的 0 表示输入结束,并不用输出结果。
输入描述:
输入文件最多包含 10 组测试数据,每个数据占一行,仅包含一个正整数 n( 1<=n<=100 ),表示小张手上的空汽水瓶数。n=0 表示输入结束,你的程序不应当处理这一行。
输出描述:
对于每组测试数据,输出一行,表示
最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。
package day1123; import java.util.Scanner; //某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。 //小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。 //数据范围:输入的正整数满足 //1≤n≤100 public class demo22 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int l = 10;//最多10组数据 int[] arr = new int[l]; for (int i = 0; i < l; i++) { arr[i] = sc.nextInt(); if (arr[i] == 0) {//遍历到0就停止 break; } } for (int i = 0; i < arr.length; i++) { if (arr[i] != 0) { //遇到0就停止 System.out.println(huanPingzi(arr[i])); } else { return; } } } private static int huanPingzi(int n) {//传入空瓶数量 int N = 0;//喝了的瓶数 int last = 0;//瓶子余数 while (n >= 3) { N += n / 3; last = n % 3; n = n / 3; if ((n + last) >= 3) {//剩余大于3就把余数last给空瓶n n = n + last; last = 0; } else {//否则就全给last last = last + n; n = 0; } } if (last == 2) {//剩余数last为2就可以跟老板借瓶子 N++; } return N; } }