方法1思路:每次取两个值a,b,输出两个值a*b,b-1。(前提a*b!=0)
注意点:注意“零多项式”的指数和系数都是 0,但是表示为 0 0
#include <iostream>
using namespace std;
int main() {
int a, b;
bool first = true;
while (cin>>a>>b) {
if (b!=0&&a!=0) {
if (!first) {
cout<<" ";
}
cout<<a*b<<" "<<b-1;
first = false;
}
}
if (first) {
cout<<"0 0";
}
return 0;
}
方法2思路(自写):先把这些值提取到一个数组中,再开始计算:(类似于方法1,但此处主要目的是编程满足一种情况:将输入的数字(消除空格)提取到一个数组之中,便于后续计算)
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int a[4000],b[4000];
int a1,a2;
int cnta =0; //输入系数和指数对的计数器
while(cin>>a1>>a2) //将输入的带有空格的样例的数字转移到数组中
{
a[2*cnta]=a1;
a[2*cnta+1]=a2;
cnta ++;
}
int cntb=0; //输出系数和指数对的计数器
for(int i=0;i<cnta;i++)
{
if (a[2*i]*a[2*i+1]!=0)
{
b[2*cntb]=a[2*i]*a[2*i+1];
b[2*cntb+1]=a[2*i+1]-1;
cntb ++;
}
}
int m=2*cntb;
if (m==0) cout<<"0 0"; //“零多项式”情况
else
{
for(int j=0;j<m;j++)
{
if (j!=m-1) cout<<b[j]<<" ";
else cout<<b[j];
}
}
return 0;
}