PAT乙級1010

1010 一元多項式求導 (25分)

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

輸入格式:

以指數遞降方式輸入多項式非零項係數和指數(絕對值均爲不超過 1000 的整數)。數字間以空格分隔。spa

輸出格式:

以與輸入相同的格式輸出導數多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。注意「零多項式」的指數和係數都是 0,可是表示爲 0 0code

輸入樣例

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;
}
相關文章
相關標籤/搜索