问题链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805313708867584
坑点:
- 题目中明确说了输入非零项的系数和指数,那么为零项就不用考虑,所以不要想多了;
- “0 0”输出:如果输入“0 0”,要输出‘0 0’’,而不是什么都不输出;如果输入“1 0”,即是多项式为常数时,也要输出“0 0”,这个是其中的一类测试用例,没想到这点,就真的很坑;
- 输入怎么控制以及如何以什么样的类型保存输入值,很重要!!!一开始我用一串字符串保存输入,然后用空格分割(这个时候还要在输入最后加上空格),在转化成一个一个数存在整型数组,其中还要判断是否为负,真的特别麻烦,但是巩固了一些基础编程,后来借鉴别人的控制输入的算法,个人觉得比较好理解的也不容易出错的是这种写法:https://blog.csdn.net/wingsemotion/article/details/82716820 (参考链接)
vector<int> ans;
int n;
do
{
cin>>n;
ans.push_back(n);
}while(getchar()!='\n');
代码:(C++)
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
int main()
{
vector<int> ans;
int n;
do
{
cin>>n;
ans.push_back(n);
}while(getchar()!='\n');
if(ans[1]==0)//多项式为常数
{
cout<<0<<' '<<0<<endl;
}
else
{
int len=ans.size();
if(ans[len-1]==0)//常数项不予考虑
{
len=len-2;
}
for(int i=0;i<len-1;i+=2)
{
ans[i]=ans[i]*ans[i+1];
ans[i+1]=ans[i+1]-1;
}
for(int i=0;i<len-1;i++)//输出格式控制
{
cout<<ans[i]<<' ';
}
cout<<ans[len-1]<<endl;
}
return 0;
}
结论:
- 输入如何存储很重要
- 选择什么循环结构也有讲究
- 题目看仔细,边界情况要分析清楚
- 格式控制要做对