PAT Basic 1010. 一元多项式求导
PAT Basic 1010. 一元多项式求导
1. 题目描述:
设计函数求一元多项式的导数。(注:\(x^n\)(\(n\)为整数)的一阶导数为\(nx^{n−1}\)。)
2. 输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。
3. 输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0
。
4. 输入样例:
3 4 -5 2 6 1 -2 0
5. 输出样例:
12 3 -10 1 6 0
6. 性能要求:
Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB
思路:
按照题目描述依次读入每一个单项式的系数和指数即可,按照题目要求只输出非零项。
这里有个bug点就是如果输出多项式可能为“零多项式”,即不含有非零项,需要输出"0 0"。一开始没读懂题,还想着都不用输出非零项还给出这个描述干什么。。。
My Code:
#include <stdio.h>
int main(void)
{
int coefficient = 0, exponent = 0;
unsigned char flag = 1; // flag of output space
int count = 0;
while(scanf("%d%d", &coefficient, &exponent) == 2)
{
if((coefficient*exponent))
{
count++;
if(flag)
{
flag = 0;
printf("%d %d", coefficient * exponent, exponent-1);
}
else
printf(" %d %d",coefficient * exponent, exponent-1);
}
// else if(coefficient == 0 && exponent == 0)
// {
// if(flag)
// {
// flag = 0;
// printf("0 0");
// }
// else
// printf(" 0 0");
// //printf("0 0");
// //break;
// }
}
if(!count) printf("0 0");
return 0;
}