PAT乙级-1010 一元多项式求导
设计函数求一元多项式的导数。(注:x**n(n为整数)的一阶导数为nxn?1。)
输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。
输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0
。
输入样例:
3 4 -5 2 6 1 -2 0
结尾无空行
输出样例:
12 3 -10 1 6 0
结尾无空行
注意事项:
第一个坑:数字之间可能有多个空格 如果你是用Java切割字符串的话
第二个坑:当系数项是0的时候输出0 0 *如:3 4 -5 2 6 1 0 1 对应输出是12 3 -10 1 6 0 0 但是题目给出的输出是 12 3 -10 1 6 0 0
第三个坑:当系数项不是0,指数是0的时候 什么也不输出 *如:3 4 -5 2 6 1 -2 0 对应输出是12 3 -10 1 6 0 (-2 0没对应的数字输出)
第四个坑:当输出多项式是空串的时候要输出0 0 *如:输入只有 -2 0 的时候 输出空串 但是此时必须输出0 0
参考: https://blog.csdn.net/qq_34594236/article/details/51533962
提问:
题目说 :以指数递降方式输入多项式非零项系数和指数 ,那为什么还会存在输入系数项为 0,如果系数为0,那就是0才对
代码:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x,y;//非零项系数和指数
String str = "";
while(sc.hasNext()){
x = sc.nextInt();
y = sc.nextInt();
if(test(x,y) != "")
str = str + " " + test(x,y);
}
if(str == "")System.out.println("0 0");
else System.out.println(str.trim());
}
public static String test(int x,int y){
if(x == 0)return "0 0"; //感觉不应该会出现这种情况,输入的是非零项系数,x不应该为0
if(x != 0 && y == 0) return "";
return x * y + " " + (y - 1);
}
}