PAT Basic 1010. 一元多项式求导

PAT Basic 1010. 一元多项式求导

1. 题目描述:

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

2. 输入格式:

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

3. 输出格式:

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

4. 输入样例:

3 4 -5 2 6 1 -2 0

5. 输出样例:

12 3 -10 1 6 0

6. 性能要求:

Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB

思路:

按照题目描述依次读入每一个单项式的系数和指数即可,按照题目要求只输出非零项。

这里有个bug点就是如果输出多项式可能为“零多项式”,即不含有非零项,需要输出"0 0"。一开始没读懂题,还想着都不用输出非零项还给出这个描述干什么。。。

My Code:

#include <stdio.h>

int main(void)
{
    int coefficient = 0, exponent = 0;
    unsigned char flag = 1; // flag of output space
    int count = 0;
    
    while(scanf("%d%d", &coefficient, &exponent) == 2)
    {
        if((coefficient*exponent))
        {
            count++;
            if(flag)
            {
                flag = 0;
                printf("%d %d", coefficient * exponent, exponent-1);
            }
            else
                printf(" %d %d",coefficient * exponent, exponent-1);   
        }
//         else if(coefficient == 0 && exponent == 0)
//         {
//             if(flag)
//             {
//                 flag = 0;
//                 printf("0 0");
//             }
//             else
//                 printf(" 0 0");
//             //printf("0 0");
//             //break;
//         }
    }
    if(!count) printf("0 0");
    
    return 0;
}
posted @ 2023-03-06 21:15  十豆加日月  阅读(5)  评论(0编辑  收藏  举报