Large number template_第1页
Large number template_第2页
Large number template_第3页
Large number template_第4页
Large number template_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Large number template#包括cstdio #包括#包含iostream #算法包括使用名称空间;typedef长会;#定义maxn演9999#定义为1010#定义dlen 4类BigInt私人:a 3000 ;/可以控制大数的位数len;公共:bigint() len = 1;memset(a,0,sizeof(); /构造函数BigInt(const LL);/ /将一个int类型的变量转化成大数BigInt(const char*);/ /将一个字符串类型的变量转化为大数BigInt(const bigint &);/ /拷贝构造函数bigint &操作符=(const

2、 bigint &);/ /重载赋值运算符,大数之间进行赋值运算朋友&操作符 (istream对象,bigint &);/ /重载输入运算符朋友则运算符(const bigint & T)const;/大数和另一个大数的大小比较布尔运算符(const int & T)const;/大数和一个int类型的变量的大小比较print() /输出大数无效;时长:BigInt(const将B)/将一个int类型的变量转化为大数输入输出;= 0;memset(a,0,sizeof(a);而(Dmaxn演)C = D(D /(maxn演+ 1)*(maxn演+ 1);D = D /(maxn演+ 1);图;

3、镜头;时长:BigInt(const char *)/将一个字符串类型的变量转化为大数t,k,index,l,i;memset(a,0,sizeof(a);L = strlen(s);len = L / dlen;如果(1% dlen)len + +;索引= 0;对(我= -1;我 = 0;I = dlen)T0;K = i-dlen + 1;如果(k0)k0;用于(int j = k;ji;j + +)T = T * 10 +的研究J - 0;索引+;时长:BigInt(const bigint & T):len(t.len)/拷贝构造函数int i;memset(a,0,sizeof(a)

4、;为(i = 0;i;i;+)一个我,我 T.;bigint和bigint:操作符=(const bigint和N)/重载赋值运算符,大数之间赋值运算int i;n.len len =;memset(a,0,sizeof(a);为(i = 0;i;i;+)一个我,因为我;返回*;istream和算子 (istream和,bigint & B)char ch maxsize * 4;int i = - 1;in ch;int l = strlen (ch);int count = 0, sum = 0;for (i = l - 1; i = 0;)sum = 0;int t = 1;for (i

5、nt j = 0; j = 0; j + +, -, t * = 10)sum + = (ch i - 0) * h;b.a count = sum;count + +;b.len = count + +;return in;ostream & operator (ostream & out, bigint & b) / / 重载输出运算符int i;cout = 0; i -)printf (% 04d, b.a in);return out;bigint bigint: operator + (which bigint & t) which / / 两个大数之间的相加运算bigint t

6、(* this);int, big;big = t.len len? t.len: len;for (i = 0; i maxn)t.a i + 1 + +;t.a in - = maxn + 1;if (t.a big! = 0)t.len = big + 1;else t.len = big;return t;bigint bigint: operator (which bigint & t) which / / 两个大数之间的相减运算int i, j, big;all flags;bigint t1, t2;if (* - t)t1 = * this;t2 = t;flag = 0;el

7、set1 = t;t2 = * this;flag = 1;big = t1.len;for (i = 0; i big; i + +)if (t1.a in i)t1.a j + = maxn;t1.a in + = maxn + 1 t2.a in;else t1.a in - = t2.a in;t1.len = big;while (t1.a len - 1 = = 0 & & t1.len 1)t1.len- -;big - -;if (flag)t1.a big - 1 = 0 t1.a big - 1;return t1;bigint bigint: operator * (wh

8、ich bigint & t) which / / 两个大数之间的相乘bigint right;int i, j; ip;int temp, temp1;for (i = 0; i len; i + +)ip = 0;for (j = 0, j maxn)temp1 = temp temp / (maxn + 1) * (maxn + 1);ip = temp / (maxn + 1);ret.a i + j = temp1;elseip = 0;ret.a i + j = temp;if (ip! = 0)ret.a i + j = ip;ret.len = i + j;while (ret

9、.a ret.len-1 = = 0 & & ret.len 1) ret.len- -;return the right;bigint bigint: operator / (const int & b) const / / 大数对一个整数进行相除运算bigint ret;int i, down = 0;for (i = s - 1; i = 0; i -)ret.a i = (a i + down * (maxn + 1) / b;down = a i + down * (maxn + 1) - ret.a i * b;ret.len = len;while (ret.len-1 ret.

10、a = = 0 & & ret.len 1)ret.len- -;return ret;int bigint: operator% (const int & b) const / / 大数对一个 int类型的变量进行取模int i, d = 0;for (i = s - 1; i = 0; i -)d = (d * (maxn + 1)% b + a i)% b;return d;bigint bigint: operator (const int & n) const / / 大数的n次方运算it bigint, ret (1);int i;if (a 1)t = * *;for (i =

11、1; (i 1) = m; i (const bigint & t) const / / 大数和另一个大数的大小比较int i;if (s t.len) return true;else if (s = t.len)ln = s - 1;while (a i = t.a in & i = 0)in - -;if (i = 0 & & a in t.a in)return true;elsereturn false;elsereturn false;bool bigint: operator (const int & t) const / / 大数和一个int类型的变量的大小比较bigint b (t);return * this b;bigint: void print () / / 输出大数int i;printf (% d, and (1);for (i = len - 2; i = 0; i -)printf (% 04d, a i);/ / printf ( n);int main ()int, cas = 1;scanf (% d, & t);char str str1 1010 1010, ;while (t) scanf (% s%

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论