1026 Modular multiplication of polynomials
生活随笔
收集整理的這篇文章主要介紹了
1026 Modular multiplication of polynomials
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? 這道題目是多項式相乘、求模。。按照題目中的規則,可以看出,多項式的加法和減法是相同的結果,那么多項式的除法都可以用加法來計算了。代碼的重點是21到24行,36到37行,是如何實現乘和求余的步驟。
1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 #define MAXN 2000 5 struct poly{ int deg,x[MAXN];}; 6 void print(poly f) 7 { 8 cout<<f.deg<<' '; 9 for (int i=f.deg-1; i>0; --i) cout<<f.x[i]<<' '; 10 cout<<f.x[0]<<endl; 11 } 12 void read(poly &f) 13 { 14 cin>>f.deg; 15 for (int i=f.deg-1; i>=0; --i) cin>>f.x[i]; 16 } 17 //r=f*g 18 void mult(poly f,poly g,poly &r) 19 { 20 memset(r.x,0,sizeof(r.x)); 21 for (int i=0; i<f.deg; ++i) 22 for (int j=0; j<g.deg; ++j) 23 r.x[i+j] = (r.x[i+j]+f.x[i]*g.x[j])%2; 24 r.deg = f.deg+g.deg-1; 25 } 26 //m=m%h 27 void mod(poly &m,poly h) 28 { 29 int i; 30 while (1){ 31 for (i=m.deg-1; i>=0&&(!m.x[i]); --i); 32 if (i<h.deg-1){ 33 m.deg = i+1; 34 break; 35 } 36 for (int j=h.deg-1; j>=0; --i,--j) 37 m.x[i] = (m.x[i]+h.x[j])%2; 38 } 39 } 40 void solve() 41 { 42 poly f,g,h,m; 43 read(f); 44 read(g); 45 read(h); 46 mult(f,g,m); 47 mod(m,h); 48 print(m); 49 } 50 int main() 51 { 52 int t; 53 cin>>t; 54 while (t--) 55 solve(); 56 return 0; 57 }?
轉載于:https://www.cnblogs.com/wangaohui/archive/2013/01/20/2868855.html
總結
以上是生活随笔為你收集整理的1026 Modular multiplication of polynomials的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基金成立的时间长好还是短好 根据实际情
- 下一篇: MariaDB 10.0 和 MySQL