当前位置: 代码迷 >> 综合 >> PAT B1010 一元多项式求导
  详细解决方案

PAT B1010 一元多项式求导

热度:17   发布时间:2024-02-05 06:35:49.0

PAT B1010

一元多项式求导 (25分)
设计函数求一元多项式的导数。注: x n x^n (n为整数)的导数为 n x n ? 1 nx^{n-1}

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

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

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

// ConsoleApplicationB1010.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//#include <iostream>
#include<cmath>
using namespace std;
int main()
{int a[4001],b[4001];int i, j;i = 0;int count = 0,flag=0;cin >> a[0];i++;while (true){cin >> a[i];if (a[i]*a[i-1] != 0)//测试3通不过的原因在此,并非只有0多项式的导数为0多项式。{flag = 1;}if (a[i] == int('\n')){break;}if (i % 2 == 1){if (a[i] == 0){break;}else{count++;b[i] = a[i] - 1;b[i - 1] = a[i] * a[i - 1];}}i++;   }if (flag){for (i = 0; i < 2 * count - 1; i++){cout << b[i] << " ";}cout << b[2 * count - 1];}else{cout << 0 << " " << 0;}return 0;
}

这个题目开始没有理解“零多项式的指数和系数都是 0,但是表示为 0 0”这句话,错误理解为某一项求导后指数和系数都是0的时候,该项表示为0 0。导致得分一直在19左右徘徊。
另外,本题目可以直接输出,无需使用数组存储。可以使用

while(cin>>a>>b) 
while(scanf("%d %d",&a,&b)!=EOF)

输入示例。