1010.一元多项式求导
题目描述
设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为n*xn-1。)
输入描述:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出描述:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。
输入例子:
3 4 -5 2 6 1 -2 0
输出例子:
12 3 -10 1 6 0
法一:
#include <iostream>
#include <vector>
using namespace std;
typedef struct number
{
int first;
int second;
}NUM;
int main()
{
vector<NUM> v;
int flag=0;
NUM num;
while(cin>>num.first>>num.second){
if(num.second!=0)//存在指数不为0的数时
{
flag=1;
v.push_back(num);
}
}
if(flag==0)cout<<"0 0";//只有指数为0的数时
else{
for(vector<NUM>::iterator it=v.begin();it!=v.end();it++){
it->first=it->first*it->second;
it->second-=1;
}
for(vector<NUM>::iterator it=v.begin();it!=v.end();it++){
if(it!=v.begin())cout<<" ";
cout<<it->first<<" "<<it->second;
}
}
return 0;
}
法二:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int a,b,flag=0;
while(cin>>a>>b){
if(b!=0){
if(flag==1)cout<<" ";//已有一项指数不为零的数时,输出第二项前先输出一个" "
cout<<a*b<<" "<<b-1;
flag=1;
}
}
if(flag==0)cout<<"0 0";//只有指数为0的数时
return 0;
}