1010 一元多项式求导 (25分)
设计函数求一元多项式的导数。(注:xn (n为整数)的一阶导数为nxn−1 。)
输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。
输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0。
输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0
这道题有坑,一开始不知道。一通写下来,发现有两个测试点没过。然后去查了之后才发现,要处理输入是底数和指数都为0的情况,即输出0 0
。然后,添加了以下注释掉的代码。发现只有一个测试点不过。看网上其他人的代码,都是把0 0
情况用flag处理。结果测试点都通过了。
原来题目的意思是,如果遇到输入有指数为0情况,就要停止输出,不管后面输入什么。
#include<iostream>
#define MAX 10001
using namespace std;
int main(){
int base[MAX];
int power[MAX];
int i=0;
cin>>base[0]>>power[0];
// if(base[0]==0&&power[0]==0){
// cout<<"0 0"<<endl;
// return 0;
// }
while(power[i]>0){
i++;
cin>>base[i]>>power[i];
}
int flag = 0;
for(int j=0;j<i;j++){
if(power[j]!=0){
if(j==0)
cout<<base[j]*power[j]<<" "<<power[j]-1;
else
cout<<" "<<base[j]*power[j]<<" "<<power[j]-1;
flag = 1;
}
}
if(!flag)
cout<<"0 0";
cout<<endl;
return 0;
}