PAT B1010 一元多项式求导

老子叫甜甜 提交于 2019-11-28 05:55:27

PAT B1010 一元多项式求导

题目描述:

  设计函数求一元多项式的导数。(注:x​n​​(n为整数)的一阶导数为nx​n−1​​。)

 

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

 

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

 

  输入样例:
  3 4 -5 2 6 1 -2 0

 

  输出样例:
  12 3 -10 1 6 0

 

参考代码:

 1 /***********************************************
 2 PAT B1010 一元多项式求导
 3 ***********************************************/
 4 #include <iostream>
 5 #include <vector>
 6 
 7 using namespace std;
 8 
 9 int main()
10 {
11     vector<int> func;   //储存系数和指数,偶数位是系数,奇数位是指数
12 
13     int temp = 0;
14     while (cin >> temp) {
15         func.push_back(temp);
16     }
17 
18     //原方程中只有x的0次方和对应系数的时候需要特殊处理(输出“0 0”)
19     if (func.size() == 2 && func[1] == 0) {
20         func[0] = func[1] = 0;
21     }
22     else {
23         for (int i = 1; i < func.size(); i += 2) {
24             if (func[i] != 0) {
25                 func[i - 1] *= func[i]--;  //计算求导之后的系数和指数
26             }
27             else {
28                 func.erase(func.end() - 2, func.end());  //对于x的0次方求导系数、指数均为0,但空间还在,需要删除
29             }
30         }
31     }
32     
33     for (int i = 0; i < func.size(); ++i) {
34         cout << func[i];
35         if (i != func.size() - 1) cout << ' ';
36     }
37 
38     return 0;
39 }

 

注意事项:

  1:注意原方程仅有x的0次项的情况,这是本题的一个陷阱。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!