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

来源:互联网 发布:幼儿教师网络研修日志 编辑:程序博客网 时间:2024/05/17 09:15

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

设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为nxn1。)

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

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

3 4 -5 2 6 1 -2 0

输出样例:

12 3 -10 1 6 0

//温故知新,修改于2016.8.2#include<iostream>#include<vector>#include<string>using namespace std;int main(){    int tmp;    vector<int> input;    while(cin>>tmp)         input.push_back(tmp);    for(int i=0;i<input.size();i+=2)    {        input[i]=input[i]*input[i+1];        input[i+1]-=1;    }    int lastindex=input.size()-1;    for(int i=0;i<lastindex-1;i+=2)    {        if(input[i]==0&&input[i+1]==-1)            continue;        cout<<input[i]<<" "<<input[i+1]<<" ";    }    if(input[lastindex-1]==0&&input[lastindex]==-1)        cout<<endl;    else        cout<<input[lastindex-1]<<" "<<input[lastindex]<<endl;    return 0;}
#include<iostream>#include<fstream>#include<string>#include<vector>using namespace std;int str2int(string s){    int num=0;    int multiple=1;    for(int i=s.length()-1;i>=1;i--)    {            num=num+(s[i]-'0')*multiple;            multiple=multiple*10;    }    if(s[0]=='-')        num=0-num;    else        num=num+(s[0]-'0')*multiple;    return num;}//将字符串中的数字提取出来typedef struct{    int coefficient;    int power;}item;int main(){    fstream file("data.txt");    if(file.fail())        return 1;    string data;    getline(file,data);    vector<item> polynomial;    int begin=0,end=0;    while(end!=string::npos)    {        item it;        int end=data.find_first_of(" ",begin);        string num=data.substr(begin,end-begin);        it.coefficient=str2int(num);        begin=end+1;        end=data.find_first_of(" ",begin);        if (end==string::npos)        {            string num2=data.substr(begin,data.length()-begin+1);            it.power=str2int(num2);            break;        }        else        {            string num2=data.substr(begin,end-begin);            it.power=str2int(num2);            begin=end+1;        }        polynomial.push_back(it);    }    for(vector<item>::iterator it=polynomial.begin();it!=polynomial.end();it++)    {        int coefficient=(*it).coefficient;        int power=(*it).power;        if((power-1)>=0)        {            if(it!=(polynomial.end()-1))                cout<<coefficient*power<<" "<<(power-1)<<" ";            else                cout<<coefficient*power<<" "<<(power-1)<<endl;        }    }    return 0;}
0 0