PTA1010一元多项式求导

半腔热情 提交于 2019-11-29 19:33:26

设计函数求一元多项式的导数。n​​(n为整数)的一阶导数为nxn1​​。)

输入格式:

以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 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 0code:
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+");以一个或多个空格分隔
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!