1010 一元多项式求导 (25)

设计函数求一元多项式的导数。(注: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;
        }
    
    } 
}

 

posted @ 2018-08-25 14:50  fromzore  阅读(142)  评论(0编辑  收藏  举报