設計函數求一元多項式的導數。(注:xn(n爲整數)的一階導數爲nxn−1。)ios
以指數遞降方式輸入多項式非零項係數和指數(絕對值均爲不超過 1000 的整數)。數字間以空格分隔。數組
以與輸入相同的格式輸出導數多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。注意「零多項式」的指數和係數都是 0,可是表示爲 0 0
。ide
3 4 -5 2 6 1 -2 0
12 3 -10 1 6 0
#include<stdio.h> int main(){ int a[1010] = {0}; int k, e, count = 0; while(scanf("%d%d", &k, &e) != EOF){ a[e] = k; } a[0] = 0;//指數爲0的就是常數項,常數項求導直接爲0 for(int i = 1; i<=1000;i++){//從一次項開始枚舉 a[i-1] = a[i] * i;//求導公式 a[i] = 0;//在求導以後,當前係數必須清空爲0,不然後面可能沒法被覆蓋,因此這句不能省 if(a[i-1] != 0) count ++;//count計數不爲0的導數項的個數 } if(count == 0) printf("0 0");//特判 else{ for(int i = 1000; i >= 0; i--){ if(a[i] != 0){ printf("%d %d", a[i], i); count--; if(count != 0) printf(" "); } } } return 0; }
分析:函數
#include<iostream> using namespace std; int main(){ int a, b, falg = 0; while(cin >> a >> b){ if(b != 0){//若是b==0那麼就不會進入這個循環,即只有常數項係數,那麼falg就不會爲1 if(flag == 1) cout << ""; cout << a * b << " " << b - 1; falg = 1; } } if(falg == 0) cout << "0 0"; }