设计函数求一元多项式的导数。
输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。
样例">样例">样例">样例">样例">输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0
思路:这道题和一元多项式的加法与乘法运算类似,而且还简单一点。这道题甚至没有那么多要求,直接边输入边输出就好了,我这里用了笨方法,输入的同时进行运算,然后存入数组中,为了减少后面遍历的时间,先找好最大值和最小值。
#include<bits/stdc++.h>
using namespace std;
int b[1001];
int main() {
int n,ex;
int f1 = 0;
int max = -1;
int low =1000;
while(true) {
cin>>n>>ex;
a[ex] = n;
b[ex-1] +=ex*n;
if(max<(ex-1)) {//找最大值
max = ex-1;
}
if(low>(ex-1)) {//找最小值
low = ex-1;
}
if(b[ex-1]) {//是否存在非零的数值
f1 = 1;
}
if(cin.get()=='\n') {
break;
}
}
int count1=0;//方便输出的格式
for(int i = max; i>= low; i--) {
if(b[i]) {
count1==0 ? printf("%d %d",b[i],i) : printf(" %d %d",b[i],i);
count1++;
}
}
if(!f1) {//如果为n*ex都为0,即没有非零的数值,直接输出0 0
printf("0 0");
}
cout<<endl;
return 0;
}