7-3 一元多项式求导 分数 20

                                                                                                                          作者 DS课程组

设计函数求一元多项式的导数。                                                                       单位 浙江大学

输入格式:

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

输出格式:

以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。

输入样例:

3 4 -5 2 6 1 -2 0

输出样例:

12 3 -10 1 6 0

代码长度限制 16 KB

时间限制      400 ms

内存限制        64 MB

栈限制        8192 KB

#include
#include
typedef struct polynomial* number;
struct polynomial //可以自己自定义命名,作者自己找了多项式的英语全称作为类型名
{
    int a;
    int b;
    number next;
};
int main ()
{
    number head, p;
    int cnt=0;
    head = (number)malloc(sizeof(struct polynomial));
    head->next = NULL;
    p = head;
    while(scanf("%d %d", &p->a, &p->b) != EOF)
/*看不懂可以强行记下,这个很有用。这个条件判断:如果p的a,b都有值会返回2,只有一个有数字返回1,都没有也就是停止输入就返回0*/
    {
        p->a=p->a*p->b;
        p->b-=1;
        if(p->a != 0)
            cnt++;
        p->next = (number)malloc(sizeof(struct polynomial));
        p = p->next;
        p->next = NULL;
    }
//为零的多项式不要忘记
    if(cnt==0){
        printf("0 0");
        return 0;
    }
    p = head;
    while(p->next != NULL)
    {
        if(p->a != 0)
            printf("%d %d", p->a, p->b);
        if(cnt>1){
            putchar(' ');
            cnt--;
        }
        p = p->next;
    }
    free(head);
    return 0;
}

可能free那步做的不太好,作者水平有限。(小声bb,怎么作者自己找遍了csdn都没找到免费版,慷慨的大佬怎么不出手了)

你可能感兴趣的:(算法)