题目描述
设计函数求一元多项式的导数。
输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。
输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为
0 0
。
思路
开一个数组
a[]
,存放对应指数的系数,如
a[e]
即表示指数为
e
的项的系数。
然后使用while…EOF的格式读入系数和指数。
可划分为“输入”、“运算”和“输出”三步。
注意点
1、求导时,要从低次项开始枚举。因为在求导计算时,低次项不会影响高次项,而反过来高次项中的0会造成所有低次项系数变成0。
参考代码
#include<iostream>
using namespace std;
const int N = 2010;
int a[N];
int main()
{
//输入
int exp,cof,count=0;
while((scanf("%d%d",&cof,&exp))!=EOF){
a[exp]=cof;
}
//运算
for(int i=1;i<N;i++){
a[i-1]=a[i]*i;
if(a[i-1])count++;
}
//输出
if(!count)printf("0 0");
else{
for(int i=N-1;~i;i--){
if(a[i]){
printf("%d %d",a[i],i);
count--;
if(count)printf(" ");
}
}
}
return 0;
}