题目要求
设计函数求一元多项式的导数。(注: x n x^n xn(n为整数)的一阶导数为n x n − 1 x^{n-1} xn−1).
输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。
输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0。
输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0
代码
#include <iostream>
using namespace std;
int main()
{
int a1;
int a2;
cin >> a1 >> a2;
if (a2 == 0){
cout << "0 0";
return 0;
}
else{
cout << a1 * a2 << ' ' << a2 - 1;
}
while (cin >> a1 >> a2) {
if (a2 != 0) cout << ' ' << a1 * a2 << ' ' << a2 - 1;
}
}
思路
这道题难在对题目输出格式的处理和隐藏条件的挖掘。
- 输出格式处理
题目要求数字间以空格分隔,但结尾不能有多余空格,如果在一个循环里面统一做处理,会比较繁琐。所以我们先做一次输出,之后的输出每次都输出空格。然后再看输出导数多项式非零项的系数和指数”这个条件,那么常数项就无需处理,就是不需要输出! - 隐藏条件
题目没有要求结束条件,说明我们需要在每次输入完就输出,而且在输出后不能不能退出。这就要求我们用while(cin>>a1>>a2)
。否则无法通过的。
就是这样,注意到这些这道题也不难的。