c++ 1010 一元多项式求导(25 分)

方法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;
  
}

猜你喜欢

转载自blog.csdn.net/qq_36122764/article/details/82080415