题解 | #汽水瓶#
汽水瓶
https://www.nowcoder.com/practice/fe298c55694f4ed39e256170ff2c205f
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); List<Integer> res = new ArrayList<>(); while (scanner.hasNext()) { int emptyNum = scanner.nextInt(); int drinkableNum = 0; int borrowNum = 0; int exchangeRatio = 3; if (0 == emptyNum) { break; } while (emptyNum >= exchangeRatio) { int exchangeNum = emptyNum / exchangeRatio; drinkableNum += exchangeNum; emptyNum = emptyNum % exchangeRatio + exchangeNum; // 还上借的瓶子 if (borrowNum > 0) { emptyNum -= borrowNum; borrowNum = 0; } // 可以借的情况:2借1,4借2,...,依此类推,剩余2n个空瓶可以借n个空瓶 if (emptyNum % 2 == 0 && 0 != exchangeNum) { borrowNum = (int) (emptyNum * 0.5); emptyNum += borrowNum; } } res.add(drinkableNum); } res.forEach(n -> System.out.println(n)); } }