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

我的未来我决定 提交于 2019-11-29 19:32:11
1010 一元多项式求导 (25 分)

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

输入格式:

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

输出格式:

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

输入样例:

3 4 -5 2 6 1 -2 0

输出样例:

12 3 -10 1 6 0

 

 

理清楚思路就行:

1.循环储存数据之后,对数据两两处理。(系数和指数)

2.因为“零次多项式”也就是常数项特殊,单独分出来,条件是第一对处理,且指数(第二个数据)为0,对于“非零次多项式”,输出系数(前项)*指数(后项),指数减一,其中对于指数为0的项continue跳过。

 

C++代码:

#include <bits/stdc++.h>

using namespace std;

int main(void)
{
    vector<int> s;
    int n;
    char c;

    while (1) {
        cin >> n;
        s.push_back(n);

        if ((c = getchar()) == '\n')
            break;
    }

    for (size_t m = 0; m != s.size(); m += 2) {
        if (m == 0 && s[m + 1] == 0)//为零次项时
            cout << 0 << " " << 0;
        else {
            if (s[m + 1] == 0)//系数为常数0
                continue;
            else if (m == 0)
                cout << s[m] * s[m + 1] << " " << s[m + 1] - 1;//为第一个项求导
            else if(m != 0)
                cout << " " << s[m] * s[m + 1] << " " << s[m + 1] - 1;//其他项求导
        }
    }
     
    return 0;
}

第一次测试点二错误,测试点二用

5 0

测试,输出

0 0

  

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!