PAT B1010 一元多项式求导 (25 分)

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

输入格式:

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

输出格式:

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

输入样例:

3 4 -5 2 6 1 -2 0

输出样例:

12 3 -10 1 6 0
#include <stdio.h>
#include <iostream>
const int maxn = 1010;
int poly[maxn] = { 0 };
using namespace std;
int main(){
    int a, exp, count = 0;
    
    while (scanf("%d %d", &a, &exp)!=EOF){
        //
        
        if(exp>0){
        if (count == 0){
            printf("%d", a*exp);
        }
        else{
            printf(" %d", a*exp);
        }
        printf(" %d", exp - 1);
        count++;}
    }
if(count==0){
  printf("0 0");
}
    
    system("pause");
}

注意点:题目输入不固定长度,要用 while (scanf("%d %d", &a, &exp)!=EOF) 读取,最开始用getchar来判断最后一个是不是0来判断输入结束,发现太愚蠢了,题目又没有保证多项式的常数项一定有。由于是高项开始输入因此可以直接读一个输出一个,不用再保存到一个数组中,保存到数组中一定要注意不能只判断poly[i]>0,因为系数会小于0,所以判断条件为!=0。

猜你喜欢

转载自www.cnblogs.com/tccbj/p/10359216.html
今日推荐