import java.util.Scanner; public class Main { public static void main(String[] args) { //定义一个标准输入 Scanner scanner = new Scanner(System.in); //从标准输入中读入一个字符串 String str = scanner.nextLine(); //以空格为分隔符,分割字符串 String[] strArray = str.split("\\s+"); //将分割后的字符串数组转换为整型数组 int[] intArray = new int[strArray.length]; for (int i = 0; i < strArray.length; i++) { intArray[i] = Integer.parseInt(strArray[i]); } //判断第一组幂是否为常数,如果是常数则输出0 0 if (intArray[1] == 0) { System.out.println("0 0"); } //若不是常数,则全体进行正常输出,并时刻注意是否出现了常数 else { //提出第一组后,剩余的幂都满足"空格 系数 指数"的格式 //输出系数 System.out.print(intArray[0] * intArray[0 + 1] + " "); //输出指数 System.out.print((intArray[0 + 1] - 1)); //从第二组幂开始 for (int i = 2; i < intArray.length; i += 2) { if (intArray[i + 1] == 0) { break; } else { //为了标准化输出,输出一个空格 System.out.print(" "); } //输出系数 System.out.print(intArray[i] * intArray[i + 1] + " "); //输出指数 System.out.print((intArray[i + 1] - 1)); } } } }
java代码如上
关键点在这里“ //以空格为分隔符,分割字符串 String[] strArray = str.split("\\s+");”,并非单纯以空格分界,而是使用了正则表达式“\\s+“。效果上,能够防止出现输入里存在”数字之间存在两个或以上的连续的空格“。
用C++和C不涉及这个问题,这两种语言直接读取整数,不需要经过“字符串——>数组“的步骤。
不使用“\\s+",前两个测试点没法通过。我只能猜测原因是输入不够规范,有连续空格问题。