PAT :计算机程序设计能力考试:一个高校编程学习赛,内容基础,据说题目描述含糊不清,造成诸多理解错误。
第一观感是:输入输出样例极少,未给学生充分理解题目,提供更多辅助。
PAT 乙级:只涉及基础编程,最难到排序算法。适合基础语法学习阶段的同学。
问题描述
设计函数求一元多项式的导数。(注: x n x^n xn (n为整数)的一阶导数为 n x n − 1 nx^{n−1} nxn−1)。
输入格式
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 1000 1000 的整数)。数字间以空格分隔。
输出格式
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0
,但是表示为 0 0
。
输入输出样例
输入样例1
3 4 -5 2 6 1 -2 0
输出样例1
12 3 -10 1 6 0
样例解释:无。
题解 1
思路分析:
- 设置
zero
,判断是否 零多项式,是的话,直接输出0 0
,不是的话,进一步判断,指数z
是否为 0,不为 0,则输出求导后的每一项。直到,常数项,结束。 - 同时,
zero
也控制着
#include <iostream>
using namespace std;
int main() {
int x, z;
bool zero = true;
while(cin >> x >> z) {
if(z != 0) {
// 前置输出 " " 避免行尾多余空格
// 非零多项式,除最高项外均前置输出空格
if(!zero) cout << " ";
cout << x * z << " " << z - 1;
zero = false;
}
}
// 一旦进入循环,且 z 不等于 0,则表示不是零多项式
if(zero) cout << "0 0";
return 0;
}