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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? lll.c

?? 密碼大家Shoup寫的數(shù)論算法c語言實(shí)現(xiàn)
?? C
字號:
#include <NTL/LLL.h>#include <NTL/new.h>NTL_START_IMPLstatic void ExactDiv(ZZ& qq, const ZZ& a, const ZZ& b){   static ZZ q, r;   DivRem(q, r, a, b);   if (!IsZero(r)) {      cerr << "a = " << a << "\n";      cerr << "b = " << b << "\n";      Error("ExactDiv: nonzero remainder");   }   qq = q;}static void BalDiv(ZZ& q, const ZZ& a, const ZZ& d)//  rounds a/d to nearest integer, breaking ties//    by rounding towards zero.  Assumes d > 0.{   static ZZ r;   DivRem(q, r, a, d);   add(r, r, r);   long cmp = compare(r, d);   if (cmp > 0 || (cmp == 0 && q < 0))      add(q, q, 1);}static void MulAddDiv(ZZ& c, const ZZ& c1, const ZZ& c2,                       const ZZ& x, const ZZ& y, const ZZ& z)// c = (x*c1 + y*c2)/z{   static ZZ t1, t2;   mul(t1, x, c1);   mul(t2, y, c2);   add(t1, t1, t2);   ExactDiv(c, t1, z);}static void MulSubDiv(ZZ& c, const ZZ& c1, const ZZ& c2,                       const ZZ& x, const ZZ& y, const ZZ& z)// c = (x*c1 - y*c2)/z{   static ZZ t1, t2;   mul(t1, x, c1);   mul(t2, y, c2);   sub(t1, t1, t2);   ExactDiv(c, t1, z);}   #if 0static void MulSubDiv(vec_ZZ& c, const vec_ZZ& c1, const vec_ZZ& c2,                      const ZZ& x, const ZZ& y, const ZZ& z)// c = (x*c1 + y*c2)/z{   long n = c1.length();   if (c2.length() != n) Error("MulSubDiv: length mismatch");   c.SetLength(n);   long i;   for (i = 1; i <= n; i++)       MulSubDiv(c(i), c1(i), c2(i), x, y, z);}#endifstatic void RowTransform(vec_ZZ& c1, vec_ZZ& c2,                         const ZZ& x, const ZZ& y, const ZZ& u, const ZZ& v)// (c1, c2) = (x*c1 + y*c2, u*c1 + v*c2){   long n = c1.length();   if (c2.length() != n) Error("MulSubDiv: length mismatch");   static ZZ t1, t2, t3, t4;   long i;   for (i = 1; i <= n; i++) {      mul(t1, x, c1(i));      mul(t2, y, c2(i));      add(t1, t1, t2);      mul(t3, u, c1(i));      mul(t4, v, c2(i));      add(t3, t3, t4);      c1(i) = t1;      c2(i) = t3;   }}static void RowTransform(ZZ& c1, ZZ& c2,                         const ZZ& x, const ZZ& y, const ZZ& u, const ZZ& v)// (c1, c2) = (x*c1 + y*c2, u*c1 + v*c2){   static ZZ t1, t2, t3, t4;   mul(t1, x, c1);   mul(t2, y, c2);   add(t1, t1, t2);   mul(t3, u, c1);   mul(t4, v, c2);   add(t3, t3, t4);   c1 = t1;   c2 = t3;}static void MulSub(ZZ& c, const ZZ& c1, const ZZ& c2, const ZZ& x)// c = c1 - x*c2{   static ZZ t1;   mul(t1, x, c2);   sub(c, c1, t1);}static void MulSub(vec_ZZ& c, const vec_ZZ& c1, const vec_ZZ& c2,                   const ZZ& x)// c = c1 - x*c2{   long n = c1.length();   if (c2.length() != n) Error("MulSub: length mismatch");   c.SetLength(n);   long i;   for (i = 1; i <= n; i++)      MulSub(c(i), c1(i), c2(i), x);}               static long SwapTest(const ZZ& d0, const ZZ& d1, const ZZ& d2, const ZZ& lam,                     long a, long b)// test if a*d1^2 > b*(d0*d2 + lam^2){   static ZZ t1, t2;   mul(t1, d0, d2);   sqr(t2, lam);   add(t1, t1, t2);   mul(t1, t1, b);   sqr(t2, d1);   mul(t2, t2, a);   return t2 > t1;}staticvoid reduce(long k, long l,             mat_ZZ& B, vec_long& P, vec_ZZ& D,             vec_vec_ZZ& lam, mat_ZZ* U){   static ZZ t1;   static ZZ r;   if (P(l) == 0) return;   add(t1, lam(k)(P(l)), lam(k)(P(l)));   abs(t1, t1);   if (t1 <= D[P(l)]) return;   long j;   BalDiv(r, lam(k)(P(l)), D[P(l)]);   MulSub(B(k), B(k), B(l), r);   if (U) MulSub((*U)(k), (*U)(k), (*U)(l), r);   for (j = 1; j <= l-1; j++)      if (P(j) != 0)         MulSub(lam(k)(P(j)), lam(k)(P(j)), lam(l)(P(j)), r);   MulSub(lam(k)(P(l)), lam(k)(P(l)), D[P(l)], r);}staticvoid swap(long k, mat_ZZ& B, vec_long& P, vec_ZZ& D,           vec_vec_ZZ& lam, mat_ZZ* U, long m, long verbose)// swaps vectors k-1 and k;  assumes P(k-1) != 0{   long i, j;   static ZZ t1, t2, t3, e, x, y;   if (P(k) != 0) {      if (verbose) cerr << "swap case 1: " << k << "\n";      swap(B(k-1), B(k));      if (U) swap((*U)(k-1), (*U)(k));         for (j = 1; j <= k-2; j++)         if (P(j) != 0)            swap(lam(k-1)(P(j)), lam(k)(P(j)));      for (i = k+1; i <= m; i++) {         MulAddDiv(t1, lam(i)(P(k)-1), lam(i)(P(k)),                    lam(k)(P(k)-1), D[P(k)-2], D[P(k)-1]);          MulSubDiv(t2, lam(i)(P(k)-1), lam(i)(P(k)),                    D[P(k)], lam(k)(P(k)-1), D[P(k)-1]);         lam(i)(P(k)-1) = t1;         lam(i)(P(k)) = t2;      }      MulAddDiv(D[P(k)-1], D[P(k)], lam(k)(P(k)-1),                D[P(k)-2], lam(k)(P(k)-1), D[P(k)-1]);   }   else if (!IsZero(lam(k)(P(k-1)))) {      if (verbose) cerr << "swap case 2: " << k << "\n";      XGCD(e, x, y, lam(k)(P(k-1)), D[P(k-1)]);      ExactDiv(t1, lam(k)(P(k-1)), e);      ExactDiv(t2, D[P(k-1)], e);      t3 = t2;      negate(t2, t2);      RowTransform(B(k-1), B(k), t1, t2, y, x);      if (U) RowTransform((*U)(k-1), (*U)(k), t1, t2, y, x);      for (j = 1; j <= k-2; j++)         if (P(j) != 0)            RowTransform(lam(k-1)(P(j)), lam(k)(P(j)), t1, t2, y, x);      sqr(t2, t2);      ExactDiv(D[P(k-1)], D[P(k-1)], t2);      for (i = k+1; i <= m; i++)         if (P(i) != 0) {            ExactDiv(D[P(i)], D[P(i)], t2);            for (j = i+1; j <= m; j++) {               ExactDiv(lam(j)(P(i)), lam(j)(P(i)), t2);            }         }      for (i = k+1; i <= m; i++) {         ExactDiv(lam(i)(P(k-1)), lam(i)(P(k-1)), t3);      }      swap(P(k-1), P(k));   }   else {      if (verbose) cerr << "swap case 3: " << k << "\n";      swap(B(k-1), B(k));      if (U) swap((*U)(k-1), (*U)(k));         for (j = 1; j <= k-2; j++)         if (P(j) != 0)            swap(lam(k-1)(P(j)), lam(k)(P(j)));      swap(P(k-1), P(k));   }}   staticvoid IncrementalGS(mat_ZZ& B, vec_long& P, vec_ZZ& D, vec_vec_ZZ& lam,                    long& s, long k){   long n = B.NumCols();   long m = B.NumRows();   static ZZ u, t1, t2;   long i, j;   for (j = 1; j <= k-1; j++) {      long posj = P(j);      if (posj == 0) continue;      InnerProduct(u, B(k), B(j));      for (i = 1; i <= posj-1; i++) {         mul(t1, D[i], u);         mul(t2, lam(k)(i), lam(j)(i));         sub(t1, t1, t2);         div(t1, t1, D[i-1]);         u = t1;      }      lam(k)(posj) = u;   }   InnerProduct(u, B(k), B(k));   for (i = 1; i <= s; i++) {      mul(t1, D[i], u);      mul(t2, lam(k)(i), lam(k)(i));      sub(t1, t1, t2);      div(t1, t1, D[i-1]);      u = t1;   }   if (u == 0) {      P(k) = 0;   }   else {      s++;      P(k) = s;      D[s] = u;   }}staticlong LLL(ZZ& det, mat_ZZ& B, mat_ZZ* U, long a, long b, long verbose){   long m = B.NumRows();   long n = B.NumCols();   vec_long P;   P.SetLength(m);   vec_ZZ D;   D.SetLength(m+1);   D[0] = 1;   vec_vec_ZZ lam;   lam.SetLength(m);   long j;   for (j = 1; j <= m; j++)      lam(j).SetLength(m);   if (U) ident(*U, m);   long s = 0;   long k = 1;   long max_k = 0;   while (k <= m) {      if (k > max_k) {         IncrementalGS(B, P, D, lam, s, k);         max_k = k;      }      if (k == 1) {         k++;         continue;      }      reduce(k, k-1, B, P, D, lam, U);      if (P(k-1) != 0 &&           (P(k) == 0 ||            SwapTest(D[P(k)], D[P(k)-1], D[P(k)-2], lam(k)(P(k)-1), a, b))) {         swap(k, B, P, D, lam, U, max_k, verbose);         k--;      }      else {         for (j = k-2; j >= 1; j--)             reduce(k, j, B, P, D, lam, U);         k++;      }   }   det = D[s];   return s;}staticlong image(ZZ& det, mat_ZZ& B, mat_ZZ* U, long verbose){   long m = B.NumRows();   long n = B.NumCols();   vec_long P;   P.SetLength(m);   vec_ZZ D;   D.SetLength(m+1);   D[0] = 1;   vec_vec_ZZ lam;   lam.SetLength(m);   long j;   for (j = 1; j <= m; j++)      lam(j).SetLength(m);   if (U) ident(*U, m);   long s = 0;   long k = 1;   long max_k = 0;   while (k <= m) {      if (k > max_k) {         IncrementalGS(B, P, D, lam, s, k);         max_k = k;      }      if (k == 1) {         k++;         continue;      }      reduce(k, k-1, B, P, D, lam, U);      if (P(k-1) != 0 && P(k) == 0) {         swap(k, B, P, D, lam, U, max_k, verbose);         k--;      }      else {         for (j = k-2; j >= 1; j--)             reduce(k, j, B, P, D, lam, U);         k++;      }   }   det = D[s];   return s;}long LLL(ZZ& det, mat_ZZ& B, mat_ZZ& U, long verbose){   return LLL(det, B, &U, 3, 4, verbose);}long LLL(ZZ& det, mat_ZZ& B, long verbose){   return LLL(det, B, 0, 3, 4, verbose);}long LLL(ZZ& det, mat_ZZ& B, mat_ZZ& U, long a, long b, long verbose){   if (a <= 0 || b <= 0 || a > b || b/4 >= a) Error("LLL: bad args");      return LLL(det, B, &U, a, b, verbose);}long LLL(ZZ& det, mat_ZZ& B, long a, long b, long verbose){   if (a <= 0 || b <= 0 || a > b || b/4 >= a) Error("LLL: bad args");   return LLL(det, B, 0, a, b, verbose);}long image(ZZ& det, mat_ZZ& B, mat_ZZ& U, long verbose){   return image(det, B, &U, verbose);}long image(ZZ& det, mat_ZZ& B, long verbose){   return image(det, B, 0, verbose);}NTL_END_IMPL

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成a人片在线不卡一二三区| 日韩视频在线你懂得| 亚洲欧洲国产日韩| 91久久一区二区| 亚洲小少妇裸体bbw| 欧美一区二区视频在线观看2022 | 精品久久久久香蕉网| 国产在线播放一区三区四| 国产亚洲成年网址在线观看| 不卡一区在线观看| 亚洲综合自拍偷拍| 欧美一区二区三区在| 国产精品99久久久| 一区二区三区日韩精品视频| 欧美一区三区二区| 国产在线精品不卡| 国产精品久久久爽爽爽麻豆色哟哟 | 在线观看91视频| 青青青爽久久午夜综合久久午夜 | 91精品国产综合久久精品| 毛片一区二区三区| 国产精品久久久久一区| 欧美三级电影在线看| 国产资源精品在线观看| 亚洲欧美一区二区不卡| 日韩欧美国产一区二区在线播放 | 亚洲色图20p| 欧美一区二区三区免费大片 | 日韩一二三区视频| 国产成人免费xxxxxxxx| 亚洲国产aⅴ成人精品无吗| 久久日韩粉嫩一区二区三区| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲高清不卡在线| 国产精品久久久久久亚洲毛片 | 97精品国产露脸对白| 日韩高清在线一区| 成人欧美一区二区三区在线播放| 91精品国模一区二区三区| 菠萝蜜视频在线观看一区| 奇米影视在线99精品| 亚洲四区在线观看| 国产香蕉久久精品综合网| 欧美日韩国产区一| 9i在线看片成人免费| 久久国产福利国产秒拍| 亚洲欧美偷拍另类a∨色屁股| 欧美变态tickle挠乳网站| 欧美在线观看禁18| 99久久综合狠狠综合久久| 免费观看日韩av| 亚洲成人免费观看| 一个色妞综合视频在线观看| 久久精品这里都是精品| 日韩欧美123| 欧美日韩国产精品自在自线| 国产精品一色哟哟哟| 久久精品国产一区二区三区免费看| 亚洲天堂成人网| 国产精品白丝在线| 国产日产亚洲精品系列| 亚洲精品一区二区三区蜜桃下载| 91精品国产综合久久小美女| 欧美在线短视频| 色综合网色综合| 91蜜桃在线观看| 一本到不卡精品视频在线观看| 成人午夜电影网站| 国产精品一区在线观看你懂的| 精品在线亚洲视频| 看电视剧不卡顿的网站| 日韩激情一二三区| 视频一区免费在线观看| 首页国产欧美久久| 日日夜夜免费精品视频| 视频一区二区不卡| 天堂一区二区在线| 麻豆视频一区二区| 美女视频黄 久久| 久久超碰97人人做人人爱| 久久精品999| 精品在线一区二区三区| 国产一区二区三区免费播放| 国产美女在线观看一区| 成人午夜视频网站| 91麻豆精品秘密| 欧美无砖砖区免费| 在线播放日韩导航| 精品久久国产老人久久综合| 精品国产一二三| 国产精品美女久久久久久久| 亚洲色图第一区| 亚洲18色成人| 激情久久五月天| 成人黄色777网| 欧美三级在线播放| 欧美一级免费观看| 国产三级精品视频| 一级精品视频在线观看宜春院| 午夜视频久久久久久| 韩国毛片一区二区三区| www.欧美日韩| 欧美日韩国产三级| 久久中文娱乐网| 亚洲同性同志一二三专区| 亚洲一区视频在线观看视频| 蜜臀av在线播放一区二区三区| 国产乱人伦偷精品视频不卡| 91视频精品在这里| 91麻豆精品国产91久久久使用方法 | 国产欧美日韩卡一| 亚洲人亚洲人成电影网站色| 亚洲国产一二三| 国内精品久久久久影院一蜜桃| 风流少妇一区二区| 欧美日韩国产一级片| 国产拍欧美日韩视频二区| 一区二区免费看| 国产美女久久久久| 欧美日韩一区二区三区四区五区| 欧美一级电影网站| 亚洲欧美日韩久久精品| 久久机这里只有精品| 色哟哟国产精品免费观看| 欧美videossexotv100| 亚洲情趣在线观看| 国产另类ts人妖一区二区| 欧美日韩一级二级| 国产精品色眯眯| 看电视剧不卡顿的网站| 在线欧美小视频| 国产目拍亚洲精品99久久精品| 无吗不卡中文字幕| 97久久精品人人澡人人爽| 亚洲精品一线二线三线| 香蕉久久一区二区不卡无毒影院| 国产大陆a不卡| 日韩一级片网址| 亚洲第一电影网| 色噜噜久久综合| 日韩毛片视频在线看| 国产在线一区二区| 91精品国产综合久久精品图片| 亚洲美女视频在线观看| 成人理论电影网| 中文文精品字幕一区二区| 久久综合综合久久综合| 欧美一区二区在线看| 午夜国产不卡在线观看视频| 91视频免费观看| 综合久久一区二区三区| 岛国精品在线播放| 久久久久久久网| 国产酒店精品激情| 欧美精品一区二区三区在线| 免费人成精品欧美精品| 91精品综合久久久久久| 午夜精品福利一区二区蜜股av | 综合分类小说区另类春色亚洲小说欧美| 日韩av不卡一区二区| 欧美午夜一区二区三区| 亚洲激情自拍视频| 日本精品一级二级| 一区二区三区日本| 在线观看国产精品网站| 亚洲与欧洲av电影| 欧美日韩一区二区三区不卡| 亚洲综合在线电影| 欧洲另类一二三四区| 亚洲一区二区三区四区中文字幕| 91蝌蚪porny| 一区二区三区小说| 在线观看亚洲a| 午夜久久久影院| 日韩欧美一级在线播放| 极品美女销魂一区二区三区| 26uuu成人网一区二区三区| 国产在线麻豆精品观看| 国产日韩欧美麻豆| 成人精品小蝌蚪| 亚洲伦在线观看| 欧美性猛交一区二区三区精品| 亚洲福利一二三区| 日韩精品一区二区在线| 国产伦精品一区二区三区免费| 亚洲国产成人午夜在线一区| 99r国产精品| 日韩影院免费视频| 26uuu精品一区二区三区四区在线| 国产乱码精品一区二区三区五月婷 | 午夜精品久久久久久久久久| 日韩三级视频在线看| 国产精品1区2区3区| 一区二区三区在线视频观看58 | 国产美女视频一区| 18欧美乱大交hd1984| 欧美日本一区二区三区四区| 麻豆精品精品国产自在97香蕉| 久久精品欧美一区二区三区不卡 | 日本不卡视频在线观看|