题目描述:
设计函数求一元多项式的导数。(注:xn (n为整数)的一阶导数为nxn−1 。)
输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。
输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0。
输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0
思路分析:
每个多项式都会有指数和系数,求导后仍然会有指数和系数,故用结构体来表示每个多项式。
求导后系数=原系数*原指数,求导后指数=指数减一。求导后按题目要求输出
代码实现:
#include<stdio.h>
#include<math.h>
#include<string.h>
struct string{
int x;//系数
int y;//指数
}str[10010];
int main(){
int pos = 0;
int isZero = 1;//用于判断指数是否为0
while(scanf("%d %d",&str[pos].x,&str[pos].y)!=EOF){
pos++;
}
for(int i=0;i<pos;i++){
if(str[i].y!=0){//指数不为0
str[i].x = str[i].x * str[i].y;//求导后的系数放在x
str[i].y--;
if(i!=0) printf(" ");//控制空格输出
printf("%d %d",str[i].x,str[i].y);
isZero = 0;
}
}
if(isZero){//指数为0,则输出“0 0”
printf("0 0");
}
return 0;
}