1010. 一元多项式求导 (25)

设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为n*xn-1。)

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

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

输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0

传统数组方案:

#include <iostream>  
using namespace std;  
class N{
  public:
    int c;  
    int e;  
}po[2000], de[2000];  

int main(){  
    int x, y, t = 0, k = 0;  
    while (cin >> x >> y){  
        po[t].c = x;  
        po[t++].e = y;  
    }  
    for (int i = 0; i < t; i++){  
        if (po[i].e){  
            de[k].c = po[i].c*po[i].e;  
            de[k++].e = po[i].e - 1;  
        }  
    }  
    if (k == 0){  
        cout << "0 0" << endl;  
        return 0;  
    }  
    for (int i = 0; i < k; i++)  
        cout << de[i].c << " " << de[i].e << (i-k+1 ? " ": "\n");  
    return 0;  
}  

精简法:

#include <iostream>
using namespace std;
int main()
{
    int a,b;
    int flag = 0;
    b = 1;
    while(cin>>a>>b)
    {
        if(b>0)
            if(flag ==0)//判断是否为第一组输出 
            {
                cout<<a*b<<' '<<b-1;
                flag = 1;
            }
            else
                cout<<' '<<a*b<<' '<<b-1;
    }
    if(flag ==0)
        cout<<"0 0";
    return 0;
}

猜你喜欢

转载自blog.csdn.net/lzypdc/article/details/78023755