设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为n*xn-1。)
输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。1
2
3
4输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0
代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> ivec;
int n = 0, a = 0;
while(cin >> n >> a)
{
ivec.push_back(n);
ivec.push_back(a);
}
int ivec_size = ivec.size();
bool flag = true;
vector<int> ivec2;
for(int i = 0; i < ivec_size; i += 2)
{
// if(ivec[i] == 0)
// {
// cout << 0 << " " << 0 << " ";
// }
if(ivec[i + 1] != 0)
{
ivec2.push_back(ivec[i] * ivec[i + 1]);
ivec2.push_back(ivec[i + 1] - 1);
flag = false;
}
}
if(flag)
{
cout << "0 0" << endl;
}
for(int i = 0; i < ivec2.size(); ++i)
{
cout << ivec2[i] << ((i == ivec2.size() - 1)? "\n":" ");
}
return 0;
}
这一题的坑我相信大家都能看到,结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。
但是应该有人跟我一样,不得其意,我是根据网上已经AC的代码,然后跑对拍程序,找出bug的。
测试点1和4应该以一种类型数据,如1
10 0 2 3 5 0 5 6 6 0
这样的数据,输出应该是1
6 2 30 5(结尾没有空格)
有非零数据项时,就不需要输出 0 0 了。
如果这样的测试数据1
10 0 4 0 //或10 0
输出应该是1
0 0
PAT上此题本意是mooc数据结构中线性结构那一块讲完了,想让大家用链表来做,我偷个懒用vector来做,更方便。