输入描述:
输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表示小张手上的空汽水瓶数。n=0表示输入结束,你的程序不应当处理这一行。
输出描述:
对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。
输入例子:
3
10
81
0
输出例子:
1
5
40
本人代码:
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); List<Integer> list = new ArrayList<>(); int j = 0; while (true) { j++; if (j < 11) {//最多10组输入 int data = scanner.nextInt(); if (data > 0 && data < 101)//正整数 list.add(data); else break; } else break; } int[] R ; R = getBottle(list); for (int i = 0; i < list.size(); i++) System.out.println(R[i]); } public static int[] getBottle(List<Integer> list) { int[] result = new int[list.size()]; if (list.size() == 0) return result; for (int i = 0; i < list.size(); i++) { if (list.get(i) < 2) result[i] = 0; if (list.get(i) == 2) result[i] = 1; else { int counter = 0, a, b; a = list.get(i); while (true) { b = a % 3; a = a / 3; if (a != 0) counter = counter + a; if (a == 0 && b == 2) { counter = counter + 1; result[i] = counter; break; } if (a == 0 && b < 2) { result[i] = counter; break; } a = a + b; } } } return result; } } 提交结果: 请检查是否存在数组越界等非法访问情况 求大神指教
全部评论
(2) 回帖