题目就不贴了,仔细说说其中的几个要点,因为没有提供具体的测试点,解答者如果只看3 4 -5 2 6 1 -2 0这个输入样例所以容易踩坑。
1.求导是最简单的部分,系数乘指数,指数减一,再把这两个数字输出就好了,所有指数不为0的输入项直接这么处理就好了。
2.如果指数为0,需要根据该项所在的位置进行判断,因为以指数递降方式输入(这是题目中比容易被忽略的提示),所以如果输入的第一项指数为0,则直接输出0 0跳出循环就好,因为后面也不会有其他数据了;如果指数为0项前有其他项,则该项不输出,对应的就是样例最后-2 0这对数据,直接忽略不进行处理。
3.指数系数同为0,即题目中的“零多项式”,这种情况其实不需要对系数进行特殊判断,因为同理,0 0只会是单独出现的一对数据,输出也是0 0就可以了。
4.最后就是输出空格的处理,这个简单判断一下就好,第一项不加空格,之后的指数非0项前面加空格。
最后贴一下代码,当然还有很多可以优化的,另外我这个代码自己环境编译没问题,pat上运行测试居然会提示内存超限,好在不影响最后提交,也挺神秘的。
#include#include using namespace std; int main() { int n; vector rua; while (1) { cin >> n; rua.push_back(n); if (cin.get() == 'n')//以回车为信号,停止输出 break; } int len = rua.size(); for (int i=0;i < len;i+=2) { if (rua.at(i+1) == 0) { if (i == 0)//对第一项指数为0的进行特殊处理 { cout << "0 0"; } break;//其他情况跳出循环不输出 } else { if (i == 0) cout << rua.at(i) * rua.at(i+1) << " " << rua.at(i+1) - 1;//第一项前不加空格 else cout << " " << rua.at(i) * rua.at(i+1) << " " << rua.at(i+1) - 1; } } return 0; }
最后附上个人的一些测试用例,希望帮到卡在这题的同学
0 0
1 0
2 1 2 0
2 2 2 1
3 2 3 1 3 0
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)