1010 一元多项式求导 (25 分)题目要求解析

对输入的数要分四种情况讨论

  1. 系数为0,指数也为0
  2. 系数为0,但指数不为0
  3. 系数不为0,但指数为0
  4. 系数不为0,指数也不为0 

在第1种情况下要输出“0 0”,即题目要求中的:注意“零多项式”的指数和系数都是 0,但是表示为 0 0。(原来它说的这个指数为0与系数为0都是指的输入的)

在第2、3种情况下不输出,因为题目中要求的是:输出导数多项式非零项的系数和指数

在第4种情况下正常输出

另外还要注意两点

  • 输入格式中说“数字间以空格分隔”,这对用Java分割字符串的同学是一个大坑,要注意数字间可能不只有一个空格,在以后的题目中再看到这样的要求要注意。
  • 当所有输入对应的所有输出没有时要输出“0 0”,如输入为“-2 0”,此时应该是什么也不输出,但必须要输出“0 0”才对。前边所有的都可以理解,这个真的不知道为什么,可以是出题人给大家出了个脑筋急转弯,另外我发现很多PTA的题目要求都像这个题一样,有点坑。

附上用Java实现的代码

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main
{
	public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);
		String[] inputNumStr = in.nextLine().split("\\s+");
		int[] inputNum = new int[inputNumStr.length]; //输入的数,存入数组中
		
		for(int i = 0; i <= inputNumStr.length-1; i++)
		{
			inputNum[i] = Integer.parseInt(inputNumStr[i]);
		}
		
		List<Integer> list = new ArrayList<>(); //要输出的结果
		int xiShuInput;
		int zhiShuInput;
		for(int i = 0; i <= inputNum.length-2; i += 2)
		{
			xiShuInput = inputNum[i];
			zhiShuInput = inputNum[i+1];
			
			if(xiShuInput==0 && zhiShuInput==0)
			{
				list.add(0);
				list.add(0);
			}
			else if (xiShuInput==0 && zhiShuInput!=0)
			{
				//不输出
			}
			else if(xiShuInput!=0 && zhiShuInput==0)
			{
				//不输出
			}
			else if(xiShuInput!=0 && zhiShuInput!=0)
			{
				list.add(inputNum[i] * inputNum[i+1]);
				list.add(inputNum[i+1] - 1);
			}
		}
		
		if(list.size() == 0)
		{
			System.out.println("0 0");
		}
		else
		{
			for(int i = 0; i <= list.size()-1; i++)
			{
				System.out.print(list.get(i));
				if(i != list.size()-1)
				{
					System.out.print(" ");
				}
			}
		}
	}
}

猜你喜欢

转载自blog.csdn.net/Sacredness/article/details/82846973