设计函数求一元多项式的导数。
输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。
输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0
//第一个判断点是样例,第二个是输入,第四个是输出
#include<iostream>
#include<stdio.h>
#include<malloc.h>
using namespace std;
typedef struct Data{
int ratioo; //系数
int index; //指数
} Data;
typedef struct polynome
{
Data data;
struct polynome* next;
} polynome;
int main()
{
polynome *P,*q,*p;
int r,i;
P=(polynome*)malloc(sizeof(polynome));
P->next=NULL;
p=P;
while(scanf("%d",&r)!=EOF)
{
scanf("%d",&i);
q=(polynome*)malloc(sizeof(polynome));
p->next=q;
q->next=NULL;
q->data.ratioo=r;
q->data.index=i;
p=p->next;
// cout<<p->data.index<<endl;
}
// cout<<"111"<<endl;
p=P->next;
while(p)
{
if(p->data.index==0)
{
p->data.ratioo=0;
}
else
{
p->data.ratioo=p->data.ratioo*p->data.index;
p->data.index=p->data.index-1;
}
p=p->next;
}
// cout<<"111"<<endl;
p=P->next;
int flag=0; //用于计数
if(p->data.ratioo==0)
p=p->next;
if(!p)
cout<<"0 0"<<endl;
while(p)
{
//cout<<"*"<<p->data.ratioo<<endl;
if(flag==0&&p->data.ratioo!=0)
{
cout<<p->data.ratioo<<" "<<p->data.index;
flag++;
}
else if(p->data.ratioo!=0)
cout<<" "<<p->data.ratioo<<" "<<p->data.index;
p=p->next;
}
}