1. 程式人生 > >1010 一元多項式求導(~scanf)

1010 一元多項式求導(~scanf)

設計函式求一元多項式的導數。(注:x​n​​(n為整數)的一階導數為nx​n−1​​。)

輸入格式:

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

輸出格式:

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

輸入樣例:

3 4 -5 2 6 1 -2 0

輸出樣例:

12 3 -10 1 6 0

分析:

       本體實際上沒什麼難度,主要就是一個對輸入進行處理的問題。先看程式碼:

#include<cstdio>

int main(){
	int m, n, flag = 1;
	while(~scanf("%d %d", &m, &n)){
		if(n != 0){
			if(flag){
				printf("%d %d", m * n, n - 1);
				flag = 0;
			}else{
				printf(" %d %d", m * n, n - 1);
			}
		}
	}
	if(flag) printf("0 0");
}

       scanf返回成功讀入資料的項數,遇到錯誤或end of file時返回EOF(-1),~是按位取反,-1的反碼為0,即可跳出迴圈。也可寫為scanf("%d %d", &m, &n) != EOF。本題沒有必要建立陣列or結構體去儲存,直接輸出就是很好的方法。flag用於控制格式,同時解決零多項式的問題。