#include<stdio.h> #include<stdlib.h> #include<algorithm> using namespace std; int main() { int arr[2111]; fill(arr,arr+2111,0); int n=0,tmp; while(scanf("%d",&tmp)!=EOF) //存储系数和指数,下标从0开始偶数为系数,奇数为指数 arr[n++]=tmp; for(int i=0 ; i<n ; i+=2) { if(arr[i+1]==0) //指数为0,导数就为0,无需计算 arr[i]=0; else { arr[i]*=arr[i+1]; //求导 --arr[i+1]; } } int cnt=0; //【skill】统计系数不为0的个数,控制空格输出 for(int i=0 ; i<n ; i+=2) if(arr[i]!=0) ++cnt; for(int i=0 ; i<n ; i+=2) { if(arr[i+1]==0) //x的指数为0的时候只输出系数,而且系数为0的时候输出本身就是0,不为0的时候就输出系数,整合在一个式子中 { if(arr[i]!=0 || n==2) //系数为0,指数不为0,输出%d 0;只有一个常数的时候,输出0 0; { printf("%d 0",arr[i]); --cnt; } } else { printf("%d %d",arr[i],arr[i+1]); //指数不为0的时候,输出系数和指数 --cnt; } if(cnt>0) //判断是否插入空格 不能写成!=0 如果结果只有0 0,上面输出会变成-1,到不了0,格式错误 printf(" "); } printf("\n"); system("pause"); return 0; }
时间: 2024-10-13 17:32:30