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

来源:互联网 发布:数据恢复精灵吧 编辑:程序博客网 时间:2024/05/17 22:23

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

时间限制 400 ms
内存限制 65536 kB
代码长度限制 8000 B
判题程序 Standard

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

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

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

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

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

原题地址: https://www.patest.cn/contests/pat-b-practise/1010


注意一下求导为0的项不输出, 当整个求导多项式都为0时,要输出“0 0”

#include <iostream>#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <cctype>using namespace std;void solve(){    int a[5000], n = 0;    char ch;    char str[10000] = {0};    gets(str);    for(int i = 0; str[i]; ){        if(str[i] != ' '){            a[n ++] = atoi(str + i);            while(str[i] && str[i] != ' ')                i ++;        }        else{            i ++;        }    }    int b[n], n_ = 0;    for(int i = 0; i < n; i += 2){        if(a[i] * a[i + 1]){            b[n_] = a[i] * a[i + 1];            b[n_ + 1] = a[i + 1] - 1;            n_ += 2;        }    }    if(!n_){        cout << "0 0" << endl;        return ;    }    for(int i = 0; i < n_; i += 2){        cout << b[i] << " " << b[i + 1];        if(i + 2 < n_)            cout << " ";    }    cout << endl; }int main(){    solve();    return 0;}

别的精简代码:

#include <stdlib.h>#include <string.h>#include <iostream>using namespace std;int main(){    int a,b;    int flag = 0;    b = 1;    while(cin>>a>>b)    {        if(b>0)            if(flag ==0)            {                cout<<a*b<<' '<<b-1;                flag = 1;            }            else                cout<<' '<<a*b<<' '<<b-1;    }    if(flag ==0)        cout<<"0 0";    system("pause");    return 0;}

主要是没有想到cin可以这么用,不然就不用自己写转换了。

原文: http://blog.csdn.net/wyxdexyq/article/details/38795159

0 0
原创粉丝点击