PAT-B-1010 一元多项式求导

设计函数求一元多项式的导数。(注:x*nn为整数)的一阶导数为nxn*−1。)

输入格式:

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

输出格式:

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

输入样例:

1
3 4 -5 2 6 1 -2 0

输出样例:

1
12 3 -10 1 6 0

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>

using namespace std;

int main(){
int a[1010] = {0};
int k,e,count=0;
while(scanf("%d%d",&k,&e)!=-1)
a[e]=k;//指数e位置存储系数k

a[0]=0;//常数项求导后为0

for(int i=1;i<=1000;i++){
a[i-1]=a[i]*i;
a[i]=0;//求导后系数要清空,否则答案还会出错
if(a[i-1]!=0)count++;
}

//如果求导后没有项了,输出0 0
if(!count)
printf("0 0");
else{
//从高到底输出
for(int i=1000;i>=0;i--){
if(a[i]!=0){
printf("%d %d",a[i],i);
count--;
if(count!=0)
printf(" ");
}
}
}

return 0;
}

----\(˙<>˙)/----赞赏一下吧~