PAT乙级Java实现_1010. 一元多项式求导 _附详细解题注释_10

1010. 一元多项式求导 (25)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard

设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为n*xn-1。)

输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。

输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。

输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0

----------------------------------------------------------------------------------------------------

/*思路:把输入的字符串用trim()函数去掉头尾空格,
 * 然后用split(" ")将输入的字符串以空格为界分成字符子串,保存到字符串数组。
 * 题不难,但有个坑。就是输入的字符串中间的空格不止一个,得用split("\\s+")
 * "\\s+"是正则表达式形式,\\转义成\ ,\与s组成\s,表示空格,+表示至少1个空格。
 * */
import java.util.Scanner;
public class PAT_B_1010
{
	public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);//接收输入
		String[] num = in.nextLine().trim().split("\\s+");
		//将输入数字去掉头尾空格并以空格为界保存到字符串数组
		String out = "";//最后要输出的字符串
		for(int i = 0; i < num.length; i+=2 )
		{
			int xiShu = Integer.parseInt(num[i]);//输入项的系数
			int zhiShu = Integer.parseInt(num[i+1]);//输入项的指数
			int xiShuD = xiShu * zhiShu;//导数项的系数
			int zhiShuD = zhiShu - 1;//导数项的指数
			
			if(i == 0 && zhiShu == 0)//“零多项式”的指数和系数都是0,但是表示为“0 0”。
			{
				out = "0 0";
				break;
			}
			
			if(xiShuD == 0)//如果是导数项为0,不输出
				continue;
			
			out = out + xiShuD + " " + zhiShuD + " ";//将要输出的字符串保存起来
		}
		System.out.print(out.trim());//去除字符串最后的空格并输出。
	}
}
PAT乙级Java实现_1010. 一元多项式求导 _附详细解题注释_10_第1张图片

你可能感兴趣的:(PAT乙级Java实现)