亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? zz_px1.c

?? 密碼大家Shoup寫(xiě)的數(shù)論算法c語(yǔ)言實(shí)現(xiàn)
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
         add(a[i], t, a[i-1]);      }      mul(a[0], a[0], b);   }} void mul(ZZ_p* x, const ZZ_p* a, const ZZ_p* b, long n){   static ZZ t, accum;   long i, j, jmin, jmax;   long d = 2*n-1;   for (i = 0; i <= d; i++) {      jmin = max(0, i-(n-1));      jmax = min(n-1, i);      clear(accum);      for (j = jmin; j <= jmax; j++) {         mul(t, rep(a[j]), rep(b[i-j]));         add(accum, accum, t);      }      if (i >= n) {         add(accum, accum, rep(a[i-n]));         add(accum, accum, rep(b[i-n]));      }      conv(x[i], accum);   }}void BuildFromRoots(ZZ_pX& x, const vec_ZZ_p& a){   long n = a.length();   if (n == 0) {      set(x);      return;   }   long k0 = NextPowerOfTwo(NTL_ZZ_pX_FFT_CROSSOVER);   long crossover = 1L << k0;   if (n <= crossover) {      x.rep.SetMaxLength(n+1);      x.rep = a;      IterBuild(&x.rep[0], n);      x.rep.SetLength(n+1);      SetCoeff(x, n);      return;   }   long k = NextPowerOfTwo(n);   long m = 1L << k;   long i, j;   long l, width;   ZZ_pX b(INIT_SIZE, m+1);   b.rep = a;   b.rep.SetLength(m+1);   for (i = n; i < m; i++)      clear(b.rep[i]);   set(b.rep[m]);      FFTRep R1(INIT_SIZE, k), R2(INIT_SIZE, k);   ZZ_p t1, one;   set(one);   vec_ZZ_p G(INIT_SIZE, crossover), H(INIT_SIZE, crossover);   ZZ_p *g = G.elts();   ZZ_p *h = H.elts();   ZZ_p *tmp;      for (i = 0; i < m; i+= crossover) {      for (j = 0; j < crossover; j++)         negate(g[j], b.rep[i+j]);      if (k0 > 0) {         for (j = 0; j < crossover; j+=2) {            mul(t1, g[j], g[j+1]);            add(g[j+1], g[j], g[j+1]);            g[j] = t1;         }      }         for (l = 1; l < k0; l++) {         width = 1L << l;         for (j = 0; j < crossover; j += 2*width)            mul(&h[j], &g[j], &g[j+width], width);               tmp = g; g = h; h = tmp;      }      for (j = 0; j < crossover; j++)         b.rep[i+j] = g[j];   }   for (l = k0; l < k; l++) {      width = 1L << l;      for (i = 0; i < m; i += 2*width) {         t1 = b.rep[i+width];         set(b.rep[i+width]);         ToFFTRep(R1, b, l+1, i, i+width);         b.rep[i+width] = t1;         t1 = b.rep[i+2*width];         set(b.rep[i+2*width]);         ToFFTRep(R2, b, l+1, i+width, i+2*width);         b.rep[i+2*width] = t1;         mul(R1, R1, R2);         FromFFTRep(&b.rep[i], R1, 0, 2*width-1);         sub(b.rep[i], b.rep[i], one);      }   }   x.rep.SetLength(n+1);   long delta = m-n;   for (i = 0; i <= n; i++)     x.rep[i] = b.rep[i+delta];   // no need to normalize}void eval(ZZ_p& b, const ZZ_pX& f, const ZZ_p& a)// does a Horner evaluation{   ZZ_p acc;   long i;   clear(acc);   for (i = deg(f); i >= 0; i--) {      mul(acc, acc, a);      add(acc, acc, f.rep[i]);   }   b = acc;}void eval(vec_ZZ_p& b, const ZZ_pX& f, const vec_ZZ_p& a)// naive algorithm:  repeats Horner{   if (&b == &f.rep) {      vec_ZZ_p bb;      eval(bb, f, a);      b = bb;      return;   }   long m = a.length();   b.SetLength(m);   long i;   for (i = 0; i < m; i++)       eval(b[i], f, a[i]);}void interpolate(ZZ_pX& f, const vec_ZZ_p& a, const vec_ZZ_p& b){   long m = a.length();   if (b.length() != m) Error("interpolate: vector length mismatch");   if (m == 0) {      clear(f);      return;   }   vec_ZZ_p prod;   prod = a;   ZZ_p t1, t2;   long k, i;   vec_ZZ_p res;   res.SetLength(m);   for (k = 0; k < m; k++) {      const ZZ_p& aa = a[k];      set(t1);      for (i = k-1; i >= 0; i--) {         mul(t1, t1, aa);         add(t1, t1, prod[i]);      }      clear(t2);      for (i = k-1; i >= 0; i--) {         mul(t2, t2, aa);         add(t2, t2, res[i]);      }      inv(t1, t1);      sub(t2, b[k], t2);      mul(t1, t1, t2);      for (i = 0; i < k; i++) {         mul(t2, prod[i], t1);         add(res[i], res[i], t2);      }      res[k] = t1;      if (k < m-1) {         if (k == 0)            negate(prod[0], prod[0]);         else {            negate(t1, a[k]);            add(prod[k], t1, prod[k-1]);            for (i = k-1; i >= 1; i--) {               mul(t2, prod[i], t1);               add(prod[i], t2, prod[i-1]);            }            mul(prod[0], prod[0], t1);         }      }   }   while (m > 0 && IsZero(res[m-1])) m--;    res.SetLength(m);   f.rep = res;}NTL_vector_impl(ZZ_pX,vec_ZZ_pX)NTL_eq_vector_impl(ZZ_pX,vec_ZZ_pX)NTL_io_vector_impl(ZZ_pX,vec_ZZ_pX)   void InnerProduct(ZZ_pX& x, const vec_ZZ_p& v, long low, long high,                    const vec_ZZ_pX& H, long n, ZZVec& t){   static ZZ s;   long i, j;   for (j = 0; j < n; j++)      clear(t[j]);   high = min(high, v.length()-1);   for (i = low; i <= high; i++) {      const vec_ZZ_p& h = H[i-low].rep;      long m = h.length();      const ZZ& w = rep(v[i]);      for (j = 0; j < m; j++) {         mul(s, w, rep(h[j]));         add(t[j], t[j], s);      }   }   x.rep.SetLength(n);   for (j = 0; j < n; j++)      conv(x.rep[j], t[j]);   x.normalize();}void CompMod(ZZ_pX& x, const ZZ_pX& g, const ZZ_pXArgument& A,              const ZZ_pXModulus& F){   if (deg(g) <= 0) {      x = g;      return;   }   ZZ_pX s, t;   ZZVec scratch(F.n, ZZ_pInfo->ExtendedModulusSize);   long m = A.H.length() - 1;   long l = ((g.rep.length()+m-1)/m) - 1;   ZZ_pXMultiplier M;   build(M, A.H[m], F);   InnerProduct(t, g.rep, l*m, l*m + m - 1, A.H, F.n, scratch);   for (long i = l-1; i >= 0; i--) {      InnerProduct(s, g.rep, i*m, i*m + m - 1, A.H, F.n, scratch);      MulMod(t, t, M, F);      add(t, t, s);   }   x = t;}void build(ZZ_pXArgument& A, const ZZ_pX& h, const ZZ_pXModulus& F, long m){   if (m <= 0 || deg(h) >= F.n) Error("build: bad args");   if (m > F.n) m = F.n;   long i;   if (ZZ_pXArgBound > 0) {      double sz = ZZ_p::storage();      sz = sz*F.n;      sz = sz + NTL_VECTOR_HEADER_SIZE + sizeof(vec_ZZ_p);      sz = sz/1024;      m = min(m, long(ZZ_pXArgBound/sz));      m = max(m, 1);   }   ZZ_pXMultiplier M;   build(M, h, F);   A.H.SetLength(m+1);   set(A.H[0]);   A.H[1] = h;   for (i = 2; i <= m; i++)       MulMod(A.H[i], A.H[i-1], M, F);}long ZZ_pXArgBound = 0;void CompMod(ZZ_pX& x, const ZZ_pX& g, const ZZ_pX& h, const ZZ_pXModulus& F)   // x = g(h) mod f{   long m = SqrRoot(g.rep.length());   if (m == 0) {      clear(x);      return;   }   ZZ_pXArgument A;   build(A, h, F, m);   CompMod(x, g, A, F);}void Comp2Mod(ZZ_pX& x1, ZZ_pX& x2, const ZZ_pX& g1, const ZZ_pX& g2,              const ZZ_pX& h, const ZZ_pXModulus& F){   long m = SqrRoot(g1.rep.length() + g2.rep.length());   if (m == 0) {      clear(x1);      clear(x2);      return;   }   ZZ_pXArgument A;   build(A, h, F, m);   ZZ_pX xx1, xx2;   CompMod(xx1, g1, A, F);   CompMod(xx2, g2, A, F);   x1 = xx1;   x2 = xx2;}void Comp3Mod(ZZ_pX& x1, ZZ_pX& x2, ZZ_pX& x3,               const ZZ_pX& g1, const ZZ_pX& g2, const ZZ_pX& g3,              const ZZ_pX& h, const ZZ_pXModulus& F){   long m = SqrRoot(g1.rep.length() + g2.rep.length() + g3.rep.length());   if (m == 0) {      clear(x1);      clear(x2);      clear(x3);      return;   }   ZZ_pXArgument A;   build(A, h, F, m);   ZZ_pX xx1, xx2, xx3;   CompMod(xx1, g1, A, F);   CompMod(xx2, g2, A, F);   CompMod(xx3, g3, A, F);   x1 = xx1;   x2 = xx2;   x3 = xx3;}static void StripZeroes(vec_ZZ_p& x){   long n = x.length();   while (n > 0 && IsZero(x[n-1]))      n--;   x.SetLength(n);}void PlainUpdateMap(vec_ZZ_p& xx, const vec_ZZ_p& a,                     const ZZ_pX& b, const ZZ_pX& f){   long n = deg(f);   long i, m;   if (IsZero(b)) {      xx.SetLength(0);      return;   }   m = n-1 - deg(b);   vec_ZZ_p x(INIT_SIZE, n);   for (i = 0; i <= m; i++)      InnerProduct(x[i], a, b.rep, i);   if (deg(b) != 0) {      ZZ_pX c(INIT_SIZE, n);      LeftShift(c, b, m);      for (i = m+1; i < n; i++) {         MulByXMod(c, c, f);         InnerProduct(x[i], a, c.rep);      }   }   xx = x;}   void UpdateMap(vec_ZZ_p& x, const vec_ZZ_p& aa,                const ZZ_pXMultiplier& B, const ZZ_pXModulus& F){   long n = F.n;   long i;   vec_ZZ_p a;   a = aa;   StripZeroes(a);   if (a.length() > n) Error("UpdateMap: bad args");   if (!B.UseFFT) {      PlainUpdateMap(x, a, B.b, F.f);      StripZeroes(x);      return;   }   FFTRep R1(INIT_SIZE, F.k), R2(INIT_SIZE, F.l);   vec_ZZ_p V1(INIT_SIZE, n);   RevToFFTRep(R1, a, F.k, 0, a.length()-1, 0);   mul(R2, R1, F.FRep);   RevFromFFTRep(V1, R2, 0, n-2);   for (i = 0; i <= n-2; i++)  negate(V1[i], V1[i]);   RevToFFTRep(R2, V1, F.l, 0, n-2, n-1);   mul(R2, R2, B.B1);   mul(R1, R1, B.B2);   AddExpand(R2, R1);   RevFromFFTRep(x, R2, 0, n-1);   StripZeroes(x);}   void ProjectPowers(vec_ZZ_p& x, const vec_ZZ_p& a, long k,                   const ZZ_pXArgument& H, const ZZ_pXModulus& F){   long n = F.n;   if (a.length() > n || k < 0 || k >= (1L << (NTL_BITS_PER_LONG-4)))       Error("ProjectPowers: bad args");   long m = H.H.length()-1;   long l = (k+m-1)/m - 1;   ZZ_pXMultiplier M;   build(M, H.H[m], F);   vec_ZZ_p s(INIT_SIZE, n);   s = a;   StripZeroes(s);   x.SetLength(k);   for (long i = 0; i <= l; i++) {      long m1 = min(m, k-i*m);      ZZ_p* w = &x[i*m];      for (long j = 0; j < m1; j++)         InnerProduct(w[j], H.H[j].rep, s);      if (i < l)         UpdateMap(s, s, M, F);   }}void ProjectPowers(vec_ZZ_p& x, const vec_ZZ_p& a, long k,                   const ZZ_pX& h, const ZZ_pXModulus& F){   if (a.length() > F.n || k < 0) Error("ProjectPowers: bad args");   if (k == 0) {      x.SetLength(0);      return;   }   long m = SqrRoot(k);   ZZ_pXArgument H;   build(H, h, F, m);   ProjectPowers(x, a, k, H, F);}void BerlekampMassey(ZZ_pX& h, const vec_ZZ_p& a, long m){   ZZ_pX Lambda, Sigma, Temp;   long L;   ZZ_p Delta, Delta1, t1;   long shamt;   // cerr << "*** " << m << "\n";   Lambda.SetMaxLength(m+1);   Sigma.SetMaxLength(m+1);   Temp.SetMaxLength(m+1);   L = 0;   set(Lambda);   clear(Sigma);   set(Delta);   shamt = 0;   long i, r, dl;   for (r = 1; r <= 2*m; r++) {      // cerr << r << "--";      clear(Delta1);      dl = deg(Lambda);      for (i = 0; i <= dl; i++) {         mul(t1, Lambda.rep[i], a[r-i-1]);         add(Delta1, Delta1, t1);      }      if (IsZero(Delta1)) {         shamt++;         // cerr << "case 1: " << deg(Lambda) << " " << deg(Sigma) << " " << shamt << "\n";      }      else if (2*L < r) {         div(t1, Delta1, Delta);         mul(Temp, Sigma, t1);         Sigma = Lambda;         ShiftSub(Lambda, Temp, shamt+1);         shamt = 0;         L = r-L;         Delta = Delta1;         // cerr << "case 2: " << deg(Lambda) << " " << deg(Sigma) << " " << shamt << "\n";      }      else {         shamt++;         div(t1, Delta1, Delta);         mul(Temp, Sigma, t1);         ShiftSub(Lambda, Temp, shamt);         // cerr << "case 3: " << deg(Lambda) << " " << deg(Sigma) << " " << shamt << "\n";      }   }   // cerr << "finished: " << L << " " << deg(Lambda) << "\n";    dl = deg(Lambda);   h.rep.SetLength(L + 1);   for (i = 0; i < L - dl; i++)      clear(h.rep[i]);   for (i = L - dl; i <= L; i++)      h.rep[i] = Lambda.rep[L - i];}void GCDMinPolySeq(ZZ_pX& h, const vec_ZZ_p& x, long m){   long i;   ZZ_pX a, b;   ZZ_pXMatrix M;   ZZ_p t;   a.rep.SetLength(2*m);   for (i = 0; i < 2*m; i++) a.rep[i] = x[2*m-1-i];   a.normalize();   SetCoeff(b, 2*m);   HalfGCD(M, b, a, m+1);   /* make monic */   inv(t, LeadCoeff(M(1,1)));   mul(h, M(1,1), t);}void MinPolySeq(ZZ_pX& h, const vec_ZZ_p& a, long m){   if (m < 0 || m >= (1L << (NTL_BITS_PER_LONG-4))) Error("MinPoly: bad args");   if (a.length() < 2*m) Error("MinPoly: sequence too short");   if (m > NTL_ZZ_pX_BERMASS_CROSSOVER)      GCDMinPolySeq(h, a, m);   else      BerlekampMassey(h, a, m);}void DoMinPolyMod(ZZ_pX& h, const ZZ_pX& g, const ZZ_pXModulus& F, long m,               const vec_ZZ_p& R) {   vec_ZZ_p x;   ProjectPowers(x, R, 2*m, g, F);   MinPolySeq(h, x, m);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩高清一区二区不卡| 在线91免费看| 欧美在线免费观看亚洲| 欧美在线高清视频| 欧美一区二区三区四区视频| 91精品国产综合久久精品app| 欧美精品一区二区三区视频| 国产日韩欧美综合在线| 亚洲影院久久精品| 精彩视频一区二区三区| 91性感美女视频| 国产精品每日更新| 日本一区二区免费在线观看视频 | 日韩美一区二区三区| 久久久久久9999| 亚洲一级二级在线| 国产精品69毛片高清亚洲| 欧美在线免费播放| 中文一区二区在线观看| 秋霞电影一区二区| 91色在线porny| 久久久另类综合| 男女男精品视频| 欧美综合色免费| 亚洲图片激情小说| 成人99免费视频| 国产亚洲欧美在线| 国产精品一区二区在线看| 欧美日韩国产123区| 亚洲午夜视频在线| 91国内精品野花午夜精品| 国产精品免费观看视频| 国内精品免费**视频| 精品国产乱码久久久久久久久| 亚洲国产成人高清精品| 6080日韩午夜伦伦午夜伦| 亚洲一区二区在线免费观看视频 | 国产精品久久毛片av大全日韩| 精品亚洲成a人| 欧美国产精品一区二区| 91在线精品一区二区三区| 亚洲青青青在线视频| 欧美在线观看视频在线| 精品一区二区三区免费| 国产午夜精品一区二区| 成人毛片视频在线观看| 亚洲影视资源网| 国产欧美久久久精品影院| 一本一道综合狠狠老| 午夜久久久影院| 国产三级欧美三级日产三级99| 99精品久久99久久久久| 免费高清不卡av| 亚洲欧美另类小说视频| 欧美电影免费观看高清完整版在线| 91色在线porny| 五月天婷婷综合| 国产精品国产自产拍高清av| 欧美三级一区二区| 成人精品视频.| 九一九一国产精品| 亚洲国产精品久久久男人的天堂| 久久午夜电影网| 欧美一卡2卡三卡4卡5免费| 93久久精品日日躁夜夜躁欧美| 日韩精品久久久久久| 一二三四社区欧美黄| 久久久亚洲欧洲日产国码αv| 欧美日韩一二区| 在线精品视频小说1| www.性欧美| av午夜一区麻豆| 不卡的av网站| 91老师片黄在线观看| 99re这里只有精品首页| 91视频91自| 在线一区二区三区四区五区 | 26uuu久久综合| 久久综合五月天婷婷伊人| 日韩免费视频一区| 久久综合久色欧美综合狠狠| 日韩免费视频一区| 久久久久久久久久久久久久久99| 欧美成人高清电影在线| 亚洲精品一区二区三区蜜桃下载| 久久综合成人精品亚洲另类欧美| 久久蜜臀中文字幕| 亚洲欧洲性图库| 午夜精品123| 国产裸体歌舞团一区二区| 顶级嫩模精品视频在线看| 99精品一区二区三区| 91麻豆精品国产91久久久久久久久 | 久久视频一区二区| 亚洲精品精品亚洲| 看片网站欧美日韩| 波多野结衣在线aⅴ中文字幕不卡| 91在线视频观看| 精品日韩在线观看| 欧美经典三级视频一区二区三区| 国产精品久久久久久亚洲伦| 日韩电影网1区2区| 大陆成人av片| 日韩一级在线观看| 自拍偷拍国产亚洲| 国产盗摄一区二区| 欧美高清性hdvideosex| 国产精品久久久久一区二区三区 | 欧美老人xxxx18| 亚洲欧洲精品天堂一级| 精品午夜久久福利影院| 精品视频色一区| 亚洲综合在线免费观看| 国产69精品久久99不卡| 久久精品欧美一区二区三区麻豆| 七七婷婷婷婷精品国产| 3atv在线一区二区三区| 亚洲韩国精品一区| 欧美日韩高清一区| 日日嗨av一区二区三区四区| 欧美亚洲尤物久久| 亚洲成人一区在线| 91精品国产麻豆| 蜜臀av在线播放一区二区三区| 欧美福利视频导航| 美女www一区二区| 精品国产91乱码一区二区三区 | 精品国产青草久久久久福利| 欧美bbbbb| 日本一区二区视频在线观看| 成人看片黄a免费看在线| 国产精品久久久久久久久搜平片| 粉嫩蜜臀av国产精品网站| 国产精品久久三区| 欧美视频在线播放| 国产在线视频一区二区| 国产精品久久久久久久久图文区| 成人午夜大片免费观看| 亚洲成人一区二区| 久久天天做天天爱综合色| 91婷婷韩国欧美一区二区| 午夜激情久久久| 中文字幕欧美一区| 日韩一区二区三| 欧美在线观看一区| 国产91丝袜在线播放0| 天天影视色香欲综合网老头| 久久一夜天堂av一区二区三区| 91色porny在线视频| 精品一区二区免费| 亚洲电影视频在线| 国产精品久久久久久久浪潮网站 | 国产高清不卡二三区| 亚洲一区精品在线| 国产精品卡一卡二卡三| 精品日韩欧美在线| 欧美精品一二三| 91啦中文在线观看| 99精品久久99久久久久| 成人激情综合网站| 国产真实乱子伦精品视频| 天天av天天翘天天综合网 | 欧美色图一区二区三区| 99久久久无码国产精品| 国产一区二区三区免费观看| 精品一区二区综合| 久久超碰97人人做人人爱| 日本成人在线一区| 毛片一区二区三区| 久99久精品视频免费观看| 久久er99热精品一区二区| 蜜桃一区二区三区在线观看| 天堂成人国产精品一区| 蜜桃视频在线观看一区二区| 日韩专区中文字幕一区二区| 奇米一区二区三区| 美女视频网站久久| 国产福利一区在线| 91色porny在线视频| 777xxx欧美| 26uuu色噜噜精品一区| 色天天综合久久久久综合片| 国产毛片一区二区| 国产iv一区二区三区| 成人性生交大片免费看中文| 久久精品999| 精品一区二区免费看| 97se亚洲国产综合自在线不卡 | 亚洲精品成人在线| 亚洲成精国产精品女| 国产乱子伦视频一区二区三区 | 91丝袜高跟美女视频| 欧美丝袜丝交足nylons图片| 日韩免费视频一区| 亚洲精品乱码久久久久久黑人| 日韩国产欧美三级| 成人精品免费视频| 国产婷婷色一区二区三区四区| 一区二区三区在线观看欧美| 国产又黄又大久久|