当前位置: 代码迷 >> 综合 >> PAT (Basic Level) Practice (中文) 1010 一元多项式求导 (25 分)
  详细解决方案

PAT (Basic Level) Practice (中文) 1010 一元多项式求导 (25 分)

热度:33   发布时间:2023-11-22 06:49:47.0

题目描述

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

输入格式

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

输出格式

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

输入样例

3 4 -5 2 6 1 -2 0

输出样例

12 3 -10 1 6 0

分析

将数组下标作为指数次幂,数组值作为项前的系数。输入是从前往后,输出是从后往前,如果求导之后没有非零项,就直接输出两个0 0

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    ios::sync_with_stdio(false);cin.tie(0);int a[1010]={
    0};int k,e,count=0;while(scanf("%d %d",&k,&e)!=EOF){
    a[e]=k;}a[0]=0;for(int i=1;i<=1000;i++){
    a[i-1]=a[i]*i;a[i]=0;if(a[i-1]!=0){
    count++;}}if(count==0){
    printf("0 0");}else {
    for(int i=1000;i>=0;i--){
    if(a[i]!=0){
    printf("%d %d",a[i],i);count--;if(count!=0){
    printf(" ");}}}}
}
  相关解决方案