PAT 解题报告 (Basic Level) 1010. 一元多项式求导 (25)

Overview

PAT 解题报告 (Basic Level) 1010. 一元多项式求导 (25): 普通求导算法, 但是注意此题略坑, 有这种case:  9 0, 那么求导之后就是0了, 0的话要输出 0 0.

PAT 1010. 一元多项式求导题目描述:

简而言之就是一元多项式求导之后输出系数和指数. 下面是原题:

设计函数求一元多项式的导数。

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

输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。

输入样例:

3 4 -5 2 6 1 -2 0

输出样例:

12 3 -10 1 6 0

算法分析:

没什么算法, 数学上求倒数要怎么做就怎么做. 下面的是AC的代码:

vector<int> coffs;
vector<int> expos;

int main(void) {
    int coff, expo;
    while(cin>>coff>>expo)  {
        coffs.push_back(coff);
        expos.push_back(expo);
    }

    int len = coffs.size();

    if(!len) {
        cout<<"0 0"<<endl;
        return 0;
    }

    bool initial = true;
    ostringstream oss;
    for(int i = 0; i < len; ++i)  {
        if( !expos[i] ) continue;
        if(initial) {
            initial = false;
            oss<<coffs[i] * expos[i]<<' '<<expos[i] - 1;
        }
        else
            oss<<' '<<coffs[i] * expos[i]<<' '<<expos[i] - 1;
    }

    if(oss.str().size())
        cout<<oss.str()<<endl;
    else
        cout<<"0 0"<<endl;

    return 0;
}

坑, 注意点:

此题略坑, 有这种case:  9 0, 那么求导之后就是0了, 0的话要输出 0 0.

Summary

PAT 解题报告 (Basic Level) 1010. 一元多项式求导 (25): 普通求导算法, 但是注意此题略坑, 有这种case:  9 0, 那么求导之后就是0了, 0的话要输出 0 0.

 

Written on April 6, 2013