PAT乙级-1010 一元多项式求导

设计函数求一元多项式的导数。(注:x**nn为整数)的一阶导数为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);
    }
}

posted @ 2021-11-20 12:07  黯渊  阅读(25)  评论(0编辑  收藏  举报