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;
}
本文解析了PAT编程赛中遇到的关于一元多项式导数计算的问题,强调了输入输出样例的重要性,以及提供清晰示例和题解。讲解了如何通过编程实现导数计算,包括零多项式处理和输出格式调整。
966

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



