1. 程式人生 > >1010 一元多項式求導 ——C/C++實現

1010 一元多項式求導 ——C/C++實現

題目

1010 一元多項式求導 (25 point(s))

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

輸入格式:

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

輸出格式:

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

輸入樣例:

3 4 -5 2 6 1 -2 0

輸出樣例:

12 3 -10 1 6 0

演算法

注意“零多項式”的指數和係數都是 0,但是表示為 0 0

。這句話要理解好,題目的意思是如果單獨輸入8 0這樣的數字,要輸出0 0 表示……理工科的表達總不是容易讓人理解,出卷老師也是這樣……

至於實現,每次讀入兩個數字就好。由於輸入式是指數和係數。因此,每讀兩個會很方便。

程式碼

程式碼1、C++實現

#include <iostream>
using namespace std;

int main(){
	long int a,b,flag=0;
	do{
		cin>>a>>b;
		if(b!=0){	
			if(flag==1) cout<<" ";	//保證第一個數字之後才在數字之前輸出空格 
			cout<<a*b<<" "<<b-1;
			flag=1;
		}	
	}while(getchar()!='\n');
	if(flag==0)	cout<<"0 0";
	return 0;
} 

程式碼2、C實現

//PAT1010V1
#include <stdio.h> 

int main(){
	int a,b;
	int flag=0;
	while(scanf("%d %d",&a,&b)!=EOF){
		if(b!=0){
			if(flag==0)	printf("%d",a*b);
			else printf(" %d",a*b);
			printf(" %d",b-1);
			flag=1;
		}
	}
	if(flag==0)	printf("0 0");
	return 0;
}