设计函数求一元多项式的导数。?n??(n为整数)的一阶导数为nx?n−1??。)
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0。
3 4 -5 2 6 1 -2 0
12 3 -10 1 6 0
刚看到这道题的时候,我很天真的写了split(" "),结果总有两测试点不通过。
题目中有3个坑:
1.末尾不能有多余空格
2.分隔数字的空格可能不止一个
3.如果多项式为0多项式,输出0 0
code:
import java.util.Scanner;
public class Main{//success
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
boolean flag = true;//这个flag用来判断是否为0多项式且还能判断是否for循环一次。
String s = in.nextLine();//用nextLine()方法输入下一行内容存储为字符串
in.close();//要记得关闭输入流对象in
String[] s1 = s.split("\\s+");//正则表达式"\\s+"
for(int i = 0 ; i <= s1.length - 2 ; i += 2) {
if(Integer.parseInt(s1[i + 1]) * Integer.parseInt(s1[i]) != 0) {
if(!flag) {
System.out.print(" ");
}
System.out.print(Integer.parseInt(s1[i]) * Integer.parseInt(s1[i + 1]) + " " + (Integer.parseInt(s1[i + 1]) - 1));
flag = false;
}
}
if(flag) {
System.out.print("0 0");
}
}
}
需要注意的:
//split("\\s+");以一个或多个空格分隔
原文:https://www.cnblogs.com/mirable/p/11375423.html