华为机考-手拍球游戏

**【手拍手计算次数和总数】**游戏规则:左手和右手拍球初始数为0,首先左手第一次拍球数1下,右手拍球1下,接下来左手在拍球时是上一次左手+上一次右手的总和,右手也是上一次左手+上一次右手拍球的总和,最后拍球总数必须等于输入的拍球总和,并按规定输出。

现给定一个拍球总数,和最后输出时要打印的哪只手拍过的所有次数。每超过10 个元素,请换行输出。

输入描述:

输入为一行,拍球总数+最后打印某只手拍球的所有数量,1<= 拍球总数<=5000

输出描述:

某只手的拍的次数+某只手的拍球的所有数量

实例1:

输入:

150,left hand

输出:

now is 11 times by left hand

1 2 5 13 34 7

实例2:

输入:

100,right hand

输出:

now is 10 times by right hand

1 3 8 21 12

java 复制代码
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

public class testOk {

	@Test
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String s = in.nextLine();
		String[] split = s.split(",");

		// 计算
		Integer arriveCount = Integer.parseInt(split[0]);
		Integer countPaiJi = 0;
		Integer leftActualCount = 0;
		Integer rightActualCount = 0;
		Integer actualSumCount = 0;

		ArrayList<Integer> leftList = new ArrayList<>();
		ArrayList<Integer> rightList = new ArrayList<>();

		while (arriveCount.compareTo(actualSumCount) != 0) {
			countPaiJi = countPaiJi + 1;
			Integer cuurentCount = (leftActualCount + rightActualCount) - 0 == 0 ? 1 : (leftActualCount + rightActualCount);
			Integer virSumCount = actualSumCount + cuurentCount;
			if (virSumCount > arriveCount) {
				cuurentCount = arriveCount - actualSumCount;
			}
			if (countPaiJi % 2 == 0) {
				rightActualCount = cuurentCount;
				rightList.add(cuurentCount);
			} else {
				leftActualCount = cuurentCount;
				leftList.add(cuurentCount);
			}
			actualSumCount = actualSumCount + cuurentCount;
		}

		// 输出
		String beforeMsgString = "now is ";
		String endMsgString;
		ArrayList<Integer> responseList;
		if (split[1].contains("left")) {
			responseList = leftList;
			endMsgString = " times by left hand ";
		} else {
			responseList = rightList;
			endMsgString = " times by right hand ";
		}
		List<List<Integer>> partitionList = ListUtils.partition(responseList, 10);
		System.out.println(beforeMsgString + countPaiJi + endMsgString);
		if (CollectionUtils.isEmpty(partitionList)) {
			System.out.println("0");
		}
		for (List<Integer> integers : partitionList) {
			String collect = integers.stream().map(String::valueOf).collect(Collectors.joining(" "));
			System.out.println(collect);
		}

	}

}
相关推荐
CDN36011 小时前
360CDN 全系列产品体验:CDN / 高防 / SDK 游戏盾横向测评
运维·安全·游戏
CDN36014 小时前
中小团队加速 + 防护方案:360CDN+SDK 游戏盾实测
运维·游戏·网络安全
呆呆敲代码的小Y17 小时前
UnityMCP+Claude+VSCode,构建最强AI游戏开发环境
人工智能·vscode·游戏·unity·游戏引擎·u3d·mcp
IT从业者张某某18 小时前
基于DEVC++实现一个控制台的赛车游戏-02-实现赛车游戏
开发语言·c++·游戏
云边散步18 小时前
godot2D游戏教程系列二(22)
笔记·学习·游戏
溜达的大象1 天前
极空间 NAS 玩童年游戏:Docker 部署马里奥
游戏·docker·容器
前端不太难1 天前
鸿蒙游戏上线全流程(开发 + 打包 + 发布)
游戏·状态模式·harmonyos
万兴丶1 天前
Unity 用AI自动开发游戏近一年----最新Cursor使用心得
人工智能·游戏·unity·cursor
风酥糖1 天前
Godot游戏练习01-第19节-解决多人游戏bug
游戏·bug·godot
张老师带你学2 天前
UnityVR弯曲UI
科技·游戏·unity·游戏引擎·模型