1010 一元多项式求导 (25分) C++示例代码+解题思路

1010 一元多项式求导 (25分)

设计函数求一元多项式的导数。(注:x n x^nxn (n为整数)的一阶导数为n x n − 1 nx^{n−1}nxn1 。)

输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。

输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0。

输入样例:
3 4 -5 2 6 1 -2 0

输出样例:
12 3 -10 1 6 0

思路:

这题题目描述不是很清楚,要做出此题要注意:
如果一开始输入指数就是0的情况,这种情况就直接输出0 0并结束程序
其他正常输入的情况遇到 指数为0的 则不输出。

不然测试点2、4会过不了。

示例代码1:

#include<iostream>
#include<vector>
using namespace std;
int main(){
	vector<int> v;
	int num,index;
	while(1){
		cin>>num>>index;//系数,指数  
		if(num==0&&index==0){//系数,指数 都为 0 情况
			v.push_back(0);//插入两个0
			v.push_back(0);
		}else if(index!=0){//指数不为0情况
			v.push_back(num*index);//插入系数
			v.push_back(index-1);//插入指数
		}
		if(cin.get()=='\n')//回车键停止
			break;
	}
	
	int flag=0;
	for(auto x:v){
		if(flag==1)cout<<" ";
		cout<<x;
		flag=1;
	}
	//注意:测试点2,输入只有一对,且输入指数就是0,也要直接输出0 0,结束程序。 
	if(v.size()==0)cout<<"0 0";
	return 0;
}

示例代码2:

#include<iostream>
using namespace std;
int main(){
	int coefficient,index;//系数,指数 
	int len=0;
	for(int i=0;i<4000;i++){
		cin>>coefficient>>index;
//		cout<<coefficient<<" "<<index<<endl;
		if(index==0){//刚开始输入指数就是0的情况,直接输出0 0并结束程序 
			if(i==0){
				cout<<"0 0";
				break;
			}	
		}else{	//其他正常输入的情况遇到指数为0的就不做输出处理。
			if(index!=0){
				if(i!=0)
					cout<<" ";
				cout<<coefficient*index<<" "<<index-1;
			}
		}
		if (cin.get()=='\n'){//按回车时退出循环 
			break;
		}		
	}
	return 0;
}

版权声明:本文为weixin_43143173原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。