首页 > 其他 > 详细

PAT乙级1010

时间:2020-01-15 22:28:16      阅读:80      评论:0      收藏:0      [点我收藏+]

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

题目地址:https://pintia.cn/problem-sets/994805260223102976/problems/994805313708867584

技术分享图片

输入格式:

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

输出格式:

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

输入样例

3 4 -5 2 6 1 -2 0

输出样例

12 3 -10 1 6 0

我的理解

技术分享图片

代码段

#include<iostream>
using namespace std;
int main() {
    int array[2001];
    int i = 0;
    // 输入 
    for ( ; i < 2001; i++) {
        cin >> array[i];
        if (getchar() == '\n') {
            break;
        }
    }
    int length = i + 1;
    // 求导运算 
    for (int i = 1; i < length; i += 2) {
        array[i-1] *= array[i];
        array[i]--;
    }
    if (length == 2) {
        // 如果导数多项式是零多项式 
        if (array[0] == 0 && array[1] == -1) {
            cout << "0 0" << endl;
            return 0;
        } else {
            cout << array[0] << " " << array[1] << endl;
        }
    } else {
        // 如果末尾的那一项系数为0,并且指数为-1,表示该项为常数0,舍去
        if (array[length - 2] == 0 && array[length - 1] == -1) {
            length -= 2;
        }
        for (int i = 0; i < length; i += 2) {
            if (i == length - 2) {
                cout << array[i] << " " << array[i + 1] << endl;
            } else {
                cout << array[i] << " " << array[i + 1] << " ";
            }
        }
    }
    return 0;
}

PAT乙级1010

原文:https://www.cnblogs.com/another-7/p/12169991.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!