Keshawn_lu's Blog

PAT 1010.一元多项式求导

字数统计: 416阅读时长: 1 min
2021/02/04 Share

题目简介:

设计函数求一元多项式的导数。(注:$x^{n}$(n为整数)的一阶导数为$nx^{n-1}$。)

输入格式:

以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。

输出格式:

以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0

输入样例:

1
3 4 -5 2 6 1 -2 0

输出样例:

1
12 3 -10 1 6 0

思路:

这题主要是题意表达的不清楚,按照它的测试用例来看,只有指数全为0的用例才能输出0 0

tips:

  • 指数为0的部分(即常数部分)求导后为0,不需要输出。
  • 判断一行是否输入结束(以回车为标志),需要用到cin.get() == '\n'

代码如下:

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <unordered_map>

using namespace std;


int main()
{
vector<vector<int>> res(2048, vector<int>());

int num1; //系数
int num2; //指数

int sum = 0;
int i = 0;
int flag = 0;

while(true) {

cin >> num1;
cin >> num2;

if (num2 != 0) {

res[i].push_back(num1 * num2);
res[i].push_back(num2 - 1);
i++;
sum++;

flag = 1;
}

if (cin.get() == '\n') //判断回车输入
break;
}

if (flag == 0) {

cout << "0 0";
return 0;
}

for (int i = 0; i < sum; i++) {

if(i < sum - 1)
cout << res[i][0] << " " << res[i][1] << " ";
else
cout << res[i][0] << " " << res[i][1];
}
}
CATALOG
  1. 1. 题目简介:
    1. 1.1. 输入格式:
    2. 1.2. 输出格式:
    3. 1.3. 输入样例:
    4. 1.4. 输出样例:
  2. 2. 思路:
  3. 3. 代码如下: