题目链接
题目描述
设计函数求一元多项式的导数。(注:x
n
(n为整数)的一阶导数为nx
n−1
。)
输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。
输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0。
输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0
题目大意
给你若干个系数 次数的一对数据,让你求求完导后的系数 次数的表示
解题思路
首先要注意输入的格式
题目中没有给出什么时候停止输入,其实就是当输入次数为0的数字后自动结束
所以输入格式可以写成这样
while(cin>>a>>b&&b!=0) //意思是不断的输入系数和次数,直到次数等于0的时候停止
其次就是要注意特殊情况的处理,当只输入一个次数为0的数据时需要特殊处理
- 当输入不止一个项时,次数为0的项自动忽略
- 当仅输出一个次数为0的项的时候,输出
0 0
解决方法是用一个num变量来存储输入的多项式,当num==0的时候说明仅输入了一个次数为0的数据,就输出0 0
题解
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b; //分别代表系数和次数
int num = 0; //记录一元多项式有几项
while(cin>>a>>b&&b!=0){
num++;
if(b!=0){ //当次数不等于0的时候才有输出
if(num!=1) cout<<" "; //当num==1时,说明是第一组数据,不输出空格,这样可以保证结尾没有多余空格
cout<<a*b<<" "<<b-1;
}
}
if(num==0) cout<<"0 0"; //说明只给出了一个0次项的数字,按题目要求输出0 0
}

541

被折叠的 条评论
为什么被折叠?



