天天看點

PAT1010B 一進制多項式求導 (25分) C/C++

題目描述:

設計函數求一進制多項式的導數。(注: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<stdio.h>
#include<math.h>
#include<string.h>

struct string{
	int x;//系數 
	int y;//指數 
}str[10010];
int main(){
	int pos = 0;
	int isZero = 1;//用于判斷指數是否為0
	while(scanf("%d %d",&str[pos].x,&str[pos].y)!=EOF){
		pos++;
	}
	for(int i=0;i<pos;i++){
		if(str[i].y!=0){//指數不為0 
			str[i].x = str[i].x * str[i].y;//求導後的系數放在x 
			str[i].y--;
            if(i!=0) printf(" ");//控制空格輸出
			printf("%d %d",str[i].x,str[i].y);
			isZero = 0;
		} 
	}
	if(isZero){//指數為0,則輸出“0 0”
		printf("0 0");
	}
	return 0;
}
           

繼續閱讀