4.9. 相等的多项式
生活随笔
收集整理的這篇文章主要介紹了
4.9. 相等的多项式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題描述
小明現在在學習多項式的展開:就是把一個形如(x+a1) (x+a2) ... (x+an)展開成如下形式:xn + b1xn-1 + b2xn-2 + ... + bn-1x + bn比如 (x+1)(x+2)=x2 + 3x + 2(x+1)3 = x3 +3x2 +3x + 1小明做了很多練習,但是不知道對錯,現在請求你的幫助,判斷小明的展開式是否正確。輸入格式
有多組測試數據。每組測試數據有三行,第一行是一個正整數N,表示多項式最高指數。N=0表示輸入結束,并且不需要處理。第二行N個整數ai,用空格隔開,i=1,...,N(-100≤ai≤100)第三行N個整數bi,用空格隔開,i=1,...,N,(-109≤bi≤109)40%的測試數據 1 ≤ N < 5;30%的測試數據 5 ≤ N < 10;20%的測試數據10 ≤ N < 15;10%的測試數據 15 ≤N≤ 20;輸出格式
對于每組測試數據,輸出一行一個字符‘Y'如果展開式是正確的,輸出‘N’如果展開式錯誤。樣例輸入
2 1 2 3 2 3 1 1 1 3 3 1 4 0 0 0 1 0 0 0 1 0樣例輸出
Y Y N #include <iostream> using namespace std; int main(){int n;while(cin>>n&&n!=0){int a[n],b[n+1],c[n+1];//展開式包含常數項有n+1個系數 for(int i=0;i<n;i++) cin>>a[i];b[n]=1;//展開式中最高項系數為1 for(int i=n-1;i>=0;i--) cin>>b[i];c[0]=a[0];c[1]=1;// for(int i=2;i<=n;i++){for(int j=i;j>=0;j--){if(j==i) c[j]=1;//局部最高項else if(j==0) c[j]*=a[i-1];//常數項相乘 else c[j]=c[j]*a[i-1]+c[j-1]; }}int flag=0;for(int i=0;i<=n;i++){if(b[i]!=c[i]){cout<<"N"<<endl;flag=1;break;}}if(flag==0)cout<<"Y"<<endl;} }總結
以上是生活随笔為你收集整理的4.9. 相等的多项式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UAP项目创建
- 下一篇: 基于单片机的坐姿提醒系统设计(#0475