题目链接
- 题目不难就是函数的求导,但是坑感觉还是蛮多的。
- 求导按系数和指数为对应的一对,但是要判断当指数为0时,说明当前为常数,求导的结果为0,不用输出。
- “零多项式”指系数和指数都为 0 0,也就是说当该多项式为求导的结果为0时输入。比如输入是【0 0】【1 0】等情况,感觉这块官方描述不清楚,难以理解。
- 对于c++没有split这个函数真是难受,直接采用while(cin>>a>>b)这种输入格式,回车结束没有结果,还必须要按一下
Ctrl + Z
,所以本次采用istringstream输入。 - 对于pyhon这种有split分割函数的也要说明一下,split()什么参数都不加是默认以空格进行分割的,中间的多个空格都会当成一个。split(' ')显示指定以一个空格进行切分,本题的输入也太坏了,每个数字直接的空格可能含有多个,这个坑找了好久。
C++ 代码
#include <iostream>
#include<string>
#include<vector>
#include<sstream>
#include <algorithm>
using namespace std;
int main() {
string buff;
getline(cin, buff);
int a, b;
vector<int> res;
istringstream n(buff);
while (n >> a >> b) {
if (b != 0) {
res.push_back(a*b);
res.push_back(b - 1);
}
}
if (res.size() == 0)
{
cout << "0 0" << endl;
return 0;
}
for (int i = 0; i < res.size(); i++) {
if (i != 0)
cout << " ";
cout << res[i];
}
cout << endl;
return 0;
}
复制代码
python3代码
def main():
s = input().split()
i = 0
res = []
while i < len(s):
if(int(s[i + 1]) == 0):
break
m = int(s[i]) * int(s[i + 1])
n = (int(s[i + 1])) - 1
res.append(str(m))
res.append(str(n))
i += 2
if(len(res) == 0):
print('0 0')
else:
print(' '.join(res).strip())
main()
复制代码
转载于:https://juejin.im/post/5ce3fba06fb9a07eec599f4f