PAT (Basic Level) Practice (中文)1010 一元多项式求导 (25分) 解决测试点2错误

题目:

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

输入格式:

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

输出格式:

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

输入样例:

3 4 -5 2 6 1 -2 0

输出样例:

12 3 -10 1 6 0

思路:

乍一看挺简单的,但小坑很多。。。
1.不知道什么时候结束输入
2.输入时说了输入非零项,结果输出“零项”是0 0
3.前后不能有空格

测试点分析:

测试点2(第三个)是输入系数非0,指数为0情况。举个栗子:
输入

-2 0

通过输出

0 0

题目例子输入

3 4 -5 2 6 1 -2 0

对应输出

12 3 -10 1 6 0

这里要求-2和0这种情况不能输出
但测试点2只测一对这种数据时,要求输出0 0

代码:

#include<stdio.h>
int main()
{
	int n,m,count=0,flag=0;
	char c;
	while(c!='\n')
	{
		flag=0;
		scanf("%d %d",&n,&m);
		c=getchar();	//结束判断回车
		count++;
		if(n!=0 && m==0)	//这种情况在末尾不能输出,不能加空格
		{
			flag=1;
		}
		if(count!=1 && flag==0)
		{
			printf(" ");
		}
		if(n==0)	//零多项式
		{
			printf("0 0");
		}
		else if(n!=0 && m!=0)//正常情况
		{
			printf("%d %d",n*m,m-1);
		}
		if(count==1 && n!=0 && m==0)//测试点2,感觉最坑的地方
		{
			printf("0 0");
		}
	}
	return 0;
}

全部通过,开心
AC!!!

猜你喜欢

转载自blog.csdn.net/qq_43745026/article/details/105111727