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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? zzx.c

?? 密碼大家Shoup寫的數論算法c語言實現
?? C
?? 第 1 頁 / 共 2 頁
字號:
   if (&x == &b) {      lb = b;      bp = lb.rep.elts();   }   else      bp = b.rep.elts();   x.rep.SetLength(d+1);   xp = x.rep.elts();   long i, j, jmin, jmax;   ZZ t, accum;   for (i = 0; i <= d; i++) {      jmin = max(0, i-db);      jmax = min(da, i);      clear(accum);      for (j = jmin; j <= jmax; j++) {	 mul(t, ap[j], bp[i-j]);	 add(accum, accum, t);      }      xp[i] = accum;   }   x.normalize();}void PlainSqr(ZZX& x, const ZZX& a){   long da = deg(a);   if (da < 0) {      clear(x);      return;   }   long d = 2*da;   const ZZ *ap;   ZZ *xp;   ZZX la;   if (&x == &a) {      la = a;      ap = la.rep.elts();   }   else      ap = a.rep.elts();   x.rep.SetLength(d+1);   xp = x.rep.elts();   long i, j, jmin, jmax;   long m, m2;   ZZ t, accum;   for (i = 0; i <= d; i++) {      jmin = max(0, i-da);      jmax = min(da, i);      m = jmax - jmin + 1;      m2 = m >> 1;      jmax = jmin + m2 - 1;      clear(accum);      for (j = jmin; j <= jmax; j++) {	 mul(t, ap[j], ap[i-j]);	 add(accum, accum, t);      }      add(accum, accum, accum);      if (m & 1) {	 sqr(t, ap[jmax + 1]);	 add(accum, accum, t);      }      xp[i] = accum;   }   x.normalize();}staticvoid PlainMul(ZZ *xp, const ZZ *ap, long sa, const ZZ *bp, long sb){   if (sa == 0 || sb == 0) return;   long sx = sa+sb-1;   long i, j, jmin, jmax;   static ZZ t, accum;   for (i = 0; i < sx; i++) {      jmin = max(0, i-sb+1);      jmax = min(sa-1, i);      clear(accum);      for (j = jmin; j <= jmax; j++) {         mul(t, ap[j], bp[i-j]);         add(accum, accum, t);      }      xp[i] = accum;   }}staticvoid KarFold(ZZ *T, const ZZ *b, long sb, long hsa){   long m = sb - hsa;   long i;   for (i = 0; i < m; i++)      add(T[i], b[i], b[hsa+i]);   for (i = m; i < hsa; i++)      T[i] = b[i];}staticvoid KarSub(ZZ *T, const ZZ *b, long sb){   long i;   for (i = 0; i < sb; i++)      sub(T[i], T[i], b[i]);}staticvoid KarAdd(ZZ *T, const ZZ *b, long sb){   long i;   for (i = 0; i < sb; i++)      add(T[i], T[i], b[i]);}staticvoid KarFix(ZZ *c, const ZZ *b, long sb, long hsa){   long i;   for (i = 0; i < hsa; i++)      c[i] = b[i];   for (i = hsa; i < sb; i++)      add(c[i], c[i], b[i]);}static void PlainMul1(ZZ *xp, const ZZ *ap, long sa, const ZZ& b){   long i;   for (i = 0; i < sa; i++)      mul(xp[i], ap[i], b);}staticvoid KarMul(ZZ *c, const ZZ *a,             long sa, const ZZ *b, long sb, ZZ *stk){   if (sa < sb) {      { long t = sa; sa = sb; sb = t; }      { const ZZ *t = a; a = b; b = t; }   }   if (sb == 1) {      if (sa == 1)         mul(*c, *a, *b);      else         PlainMul1(c, a, sa, *b);      return;   }   if (sb == 2 && sa == 2) {      mul(c[0], a[0], b[0]);      mul(c[2], a[1], b[1]);      add(stk[0], a[0], a[1]);      add(stk[1], b[0], b[1]);      mul(c[1], stk[0], stk[1]);      sub(c[1], c[1], c[0]);      sub(c[1], c[1], c[2]);      return;   }   long hsa = (sa + 1) >> 1;   if (hsa < sb) {      /* normal case */      long hsa2 = hsa << 1;      ZZ *T1, *T2, *T3;      T1 = stk; stk += hsa;      T2 = stk; stk += hsa;      T3 = stk; stk += hsa2 - 1;      /* compute T1 = a_lo + a_hi */      KarFold(T1, a, sa, hsa);      /* compute T2 = b_lo + b_hi */      KarFold(T2, b, sb, hsa);      /* recursively compute T3 = T1 * T2 */      KarMul(T3, T1, hsa, T2, hsa, stk);      /* recursively compute a_hi * b_hi into high part of c */      /* and subtract from T3 */      KarMul(c + hsa2, a+hsa, sa-hsa, b+hsa, sb-hsa, stk);      KarSub(T3, c + hsa2, sa + sb - hsa2 - 1);      /* recursively compute a_lo*b_lo into low part of c */      /* and subtract from T3 */      KarMul(c, a, hsa, b, hsa, stk);      KarSub(T3, c, hsa2 - 1);      clear(c[hsa2 - 1]);      /* finally, add T3 * X^{hsa} to c */      KarAdd(c+hsa, T3, hsa2-1);   }   else {      /* degenerate case */      ZZ *T;      T = stk; stk += hsa + sb - 1;      /* recursively compute b*a_hi into high part of c */      KarMul(c + hsa, a + hsa, sa - hsa, b, sb, stk);      /* recursively compute b*a_lo into T */      KarMul(T, a, hsa, b, sb, stk);      KarFix(c, T, hsa + sb - 1, hsa);   }}void KarMul(ZZX& c, const ZZX& a, const ZZX& b){   if (IsZero(a) || IsZero(b)) {      clear(c);      return;   }   if (&a == &b) {      KarSqr(c, a);      return;   }   vec_ZZ mem;   const ZZ *ap, *bp;   ZZ *cp;   long sa = a.rep.length();   long sb = b.rep.length();   if (&a == &c) {      mem = a.rep;      ap = mem.elts();   }   else      ap = a.rep.elts();   if (&b == &c) {      mem = b.rep;      bp = mem.elts();   }   else      bp = b.rep.elts();   c.rep.SetLength(sa+sb-1);   cp = c.rep.elts();   long maxa, maxb, xover;   maxa = MaxBits(a);   maxb = MaxBits(b);   xover = 2;   if (sa < xover || sb < xover)      PlainMul(cp, ap, sa, bp, sb);   else {      /* karatsuba */      long n, hn, sp, depth;      n = max(sa, sb);      sp = 0;      depth = 0;      do {         hn = (n+1) >> 1;         sp += (hn << 2) - 1;         n = hn;         depth++;      } while (n >= xover);      ZZVec stk;      stk.SetSize(sp,          ((maxa + maxb + NumBits(min(sa, sb)) + 2*depth + 10)           + NTL_ZZ_NBITS-1)/NTL_ZZ_NBITS);      KarMul(cp, ap, sa, bp, sb, stk.elts());   }   c.normalize();}void PlainSqr(ZZ* xp, const ZZ* ap, long sa){   if (sa == 0) return;   long da = sa-1;   long d = 2*da;   long i, j, jmin, jmax;   long m, m2;   static ZZ t, accum;   for (i = 0; i <= d; i++) {      jmin = max(0, i-da);      jmax = min(da, i);      m = jmax - jmin + 1;      m2 = m >> 1;      jmax = jmin + m2 - 1;      clear(accum);      for (j = jmin; j <= jmax; j++) {	 mul(t, ap[j], ap[i-j]);	 add(accum, accum, t);      }      add(accum, accum, accum);      if (m & 1) {	 sqr(t, ap[jmax + 1]);	 add(accum, accum, t);      }      xp[i] = accum;   }}void KarSqr(ZZ *c, const ZZ *a, long sa, ZZ *stk){   if (sa == 1) {      sqr(*c, *a);      return;   }   if (sa == 2) {      sqr(c[0], a[0]);      sqr(c[2], a[1]);      mul(c[1], a[0], a[1]);      add(c[1], c[1], c[1]);      return;   }   if (sa == 3) {      sqr(c[0], a[0]);      mul(c[1], a[0], a[1]);      add(c[1], c[1], c[1]);      sqr(stk[0], a[1]);      mul(c[2], a[0], a[2]);      add(c[2], c[2], c[2]);      add(c[2], c[2], stk[0]);      mul(c[3], a[1], a[2]);      add(c[3], c[3], c[3]);      sqr(c[4], a[2]);      return;    }   long hsa = (sa + 1) >> 1;   long hsa2 = hsa << 1;   ZZ *T1, *T2;   T1 = stk; stk += hsa;   T2 = stk; stk += hsa2-1;   KarFold(T1, a, sa, hsa);   KarSqr(T2, T1, hsa, stk);   KarSqr(c + hsa2, a+hsa, sa-hsa, stk);   KarSub(T2, c + hsa2, sa + sa - hsa2 - 1);   KarSqr(c, a, hsa, stk);   KarSub(T2, c, hsa2 - 1);   clear(c[hsa2 - 1]);   KarAdd(c+hsa, T2, hsa2-1);}      void KarSqr(ZZX& c, const ZZX& a){   if (IsZero(a)) {      clear(c);      return;   }   vec_ZZ mem;   const ZZ *ap;   ZZ *cp;   long sa = a.rep.length();   if (&a == &c) {      mem = a.rep;      ap = mem.elts();   }   else      ap = a.rep.elts();   c.rep.SetLength(sa+sa-1);   cp = c.rep.elts();   long maxa, xover;   maxa = MaxBits(a);   xover = 2;   if (sa < xover)      PlainSqr(cp, ap, sa);   else {      /* karatsuba */      long n, hn, sp, depth;      n = sa;      sp = 0;      depth = 0;      do {         hn = (n+1) >> 1;         sp += hn+hn+hn - 1;         n = hn;         depth++;      } while (n >= xover);      ZZVec stk;      stk.SetSize(sp,          ((2*maxa + NumBits(sa) + 2*depth + 10)           + NTL_ZZ_NBITS-1)/NTL_ZZ_NBITS);      KarSqr(cp, ap, sa, stk.elts());   }   c.normalize();}NTL_END_IMPL

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲第一福利一区| 欧美午夜一区二区| 欧洲视频一区二区| 久久久久久久久久看片| 一区二区三区在线观看视频 | 国产精品成人网| 天天色天天操综合| 91视频一区二区三区| 国产亚洲1区2区3区| 日本不卡视频一二三区| 色8久久精品久久久久久蜜| 国产区在线观看成人精品 | 精品少妇一区二区三区免费观看 | 69堂成人精品免费视频| 国产欧美一区二区精品婷婷| 天天综合日日夜夜精品| 91国偷自产一区二区三区观看 | 日韩精品一区二区三区中文精品| 亚洲欧美另类图片小说| 成人小视频在线| 国产网站一区二区三区| 国产伦精一区二区三区| 精品乱人伦小说| 精品一区二区三区的国产在线播放| 精品视频在线看| 亚洲图片欧美一区| 欧美在线小视频| 亚洲一区免费观看| 欧美色男人天堂| 日日夜夜精品视频免费| 678五月天丁香亚洲综合网| 午夜精品国产更新| 欧美午夜一区二区三区免费大片| 亚洲自拍偷拍av| 欧美亚洲国产bt| 亚洲成人一区二区在线观看| 欧美日韩国产综合一区二区| 亚洲成人免费在线观看| 欧美日韩1234| 久久电影网电视剧免费观看| 日韩一区二区三区视频| 麻豆一区二区三| 国产亚洲综合性久久久影院| 国产福利一区二区三区视频在线 | 成人免费黄色在线| 亚洲精品中文字幕乱码三区| 日本伦理一区二区| 蜜桃av噜噜一区| 国产欧美日本一区二区三区| 91一区二区在线| 午夜精品久久久久久久久| 精品国产第一区二区三区观看体验| 国产一级精品在线| 亚洲色图在线看| 欧美乱熟臀69xxxxxx| 久久99精品久久久久| 欧美激情艳妇裸体舞| 欧美亚洲动漫精品| 韩日精品视频一区| 亚洲欧洲国产日本综合| 欧美日韩成人高清| 国产成都精品91一区二区三| 亚洲精品国产一区二区精华液 | 色婷婷av一区| 麻豆国产精品777777在线| 国产精品热久久久久夜色精品三区 | 偷拍日韩校园综合在线| 久久精品在这里| 欧美日韩午夜在线| 成人久久视频在线观看| 婷婷久久综合九色国产成人| 欧美精品一区二区三区很污很色的 | 欧美二区三区91| 成人黄色大片在线观看| 日韩精品午夜视频| 成人欧美一区二区三区视频网页| 这里只有精品99re| 91丝袜美腿高跟国产极品老师| 丝袜美腿亚洲一区| 亚洲天堂a在线| 精品三级在线看| 欧美日韩精品欧美日韩精品| 国产精品一区在线| 日韩和欧美一区二区| 亚洲人成网站色在线观看| 精品不卡在线视频| 欧美日本国产视频| 99v久久综合狠狠综合久久| 久久国产精品露脸对白| 亚洲成人精品在线观看| 中文字幕在线不卡一区二区三区| 日韩欧美二区三区| 欧美三级电影网站| 色成人在线视频| 成人av电影免费在线播放| 极品尤物av久久免费看| 日韩av不卡在线观看| 一区二区日韩av| 日韩一区中文字幕| 国产精品成人免费精品自在线观看| 精品国产sm最大网站免费看| 337p亚洲精品色噜噜狠狠| 色八戒一区二区三区| av一区二区不卡| 成人在线一区二区三区| 成人在线视频首页| 国产成a人亚洲| 国产一区二区福利视频| 国产在线乱码一区二区三区| 免费观看在线综合色| 日本 国产 欧美色综合| 日韩av一级片| 麻豆成人免费电影| 国内精品久久久久影院薰衣草| 日本在线不卡视频一二三区| 人禽交欧美网站| 久久国内精品自在自线400部| 肉肉av福利一精品导航| 麻豆91在线观看| 国内精品视频一区二区三区八戒| 国精品**一区二区三区在线蜜桃| 国内不卡的二区三区中文字幕 | 欧美韩国日本不卡| 中文字幕乱码一区二区免费| 国产精品美女久久久久久2018| 国产精品午夜在线| 成人欧美一区二区三区在线播放| 亚洲欧美另类久久久精品2019| 亚洲精品老司机| 天堂va蜜桃一区二区三区漫画版| 日韩一区精品视频| 精品夜夜嗨av一区二区三区| 国产传媒日韩欧美成人| 99久久久久久| 欧美乱熟臀69xxxxxx| 久久色中文字幕| 中文字幕一区二区三区在线观看 | 制服丝袜中文字幕一区| 2023国产精品自拍| 国产欧美一区二区精品仙草咪| 国产精品入口麻豆九色| 一区二区成人在线| 狠狠色狠狠色综合系列| 北岛玲一区二区三区四区| 欧美日韩五月天| 久久久精品tv| 一区二区三区在线不卡| 精品伊人久久久久7777人| 99麻豆久久久国产精品免费优播| 在线免费亚洲电影| 欧美精品一区二区三| 国产精品理伦片| 日本不卡一区二区| av不卡免费在线观看| 欧美一级片在线观看| 中文字幕日本不卡| 蜜乳av一区二区| 97se狠狠狠综合亚洲狠狠| 欧美一二区视频| 亚洲色图在线看| 经典三级视频一区| 欧美性猛片aaaaaaa做受| 久久视频一区二区| 三级影片在线观看欧美日韩一区二区| 国产麻豆9l精品三级站| 欧美日本乱大交xxxxx| 中文字幕精品三区| 强制捆绑调教一区二区| 在线精品国精品国产尤物884a| 久久久99免费| 日本人妖一区二区| 欧美午夜一区二区三区| 中文字幕中文字幕一区| 免费在线看一区| 欧美午夜精品久久久久久孕妇 | 日本成人在线一区| 精品污污网站免费看| 国产精品麻豆网站| 国产裸体歌舞团一区二区| 91精品婷婷国产综合久久性色| 亚洲精品免费电影| 91视视频在线观看入口直接观看www | 国模一区二区三区白浆| 91精品婷婷国产综合久久竹菊| 亚洲精品国产精华液| 国产99久久久国产精品免费看| 日韩欧美国产电影| 天堂午夜影视日韩欧美一区二区| 波多野结衣91| 亚洲国产精品国自产拍av| 国产一区二区电影| 欧美本精品男人aⅴ天堂| 日韩精品福利网| 欧美日韩电影一区| 日韩二区在线观看| 欧美日韩国产a| 欧美aa在线视频| 日韩久久久久久| 狠狠色综合播放一区二区| 久久蜜臀中文字幕|