1.需要注意,若一开始(即数组下标为0 , 1) 输入了指数为 0 ,即s[1] = 0 , 则说明输入了所谓零多项式直接输出 0 0,且结束程序。如直接输入 1 0 ,即 s[0] = 1 , s[1] = 0,因为指数为 0 且下标为 1 则直接输出 0 0 。其中s[0]即系数的值无所谓是多少。关键在于指数 s[1] 的值。
2.若是在末尾(题也说了指数是递减输入,所以若要后面出现指数0,则必定是最后一个)输入了指数为 0 则忽略不计。 如 3 2 1 0,则可以看到指数为 0 ,但因为其前面存在其他数据组: 3 2 ,故直接输出 6 1 即可。
#include <iostream>
#include <stdlib.h>
#include <cmath>
#include <cstring>
using namespace std;
int main()
{
int s[10000];
int k=0;
char p;
while(cin>>s[k++])
{
p = getchar();
if(p =='\n')
break;
}
for(int i=0;i<k;i++)
{
if(i%2==0)
{
s[i]*= s[i+1];
s[i+1]--;
}
}
int res[k];
for(int i=0;i<k;i++)
res[i] = 0;
int count=0;
for(int i=0;i<k;i++)
{
if(s[0]==0 && s[1]==-1)
{
cout<<"0 0";
break;
}
if(i%2==0 && s[i]!=0)
{
//cout<<s[i]<<" "<<s[i+1]<<" ";
res[count] = s[i]; count++;
res[count] = s[i+1]; count++;
}
}
for(int i=0;i<count;i++)
{
if(i==(count-1))
{
cout<<res[i];
break;
}
cout<<res[i]<<" ";
}
}