设计函数求一元多项式的导数。(注:x^n^(n为整数)的一阶导数为n*x^n-1^。)
输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。
输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0
#include<iostream> #include<vector> using namespace std; struct p{ int xs;//求导前系数 int zs;//求导前指数 int xs1;//求导后系数 int zs1;//求导后指数 }; int main(){ p a[1000];//系数与指数不超过1000 vector<int> b(1000); int m=0; while(1){ cin>>b[m]; if(b[m]==0&&m%2)break;//因为输入时是指数递减方式,指数为零时这个项就为0,输入结束跳出 m++; } int k=1;//k为1时输入时系数,为-1时输入为指数 int j=0; for(int i=0;i<m+1;i++){ if(k==1){ a[j].xs=b[i]; k*=-1; } else if(k==-1){ a[j].zs=b[i]; a[j].zs1=a[j].zs-1; a[j].xs1=a[j].zs*a[j].xs; j++; k*=-1; } } if(a[0].zs==0)cout<<"0 0";//对0多项式 的输出 int y=0; for(int i=0;i<j;i++){//系数为零数就为0,不输出,要求结尾没有空格 if(a[i].xs1!=0&&y==0){ cout<<a[i].xs1<<" "<<a[i].zs1; y=1; } else if(a[i].xs1!=0&&y==1){ cout<<" "<<a[i].xs1<<" "<<a[i].zs1; } } }