C++大数模板 BigInteger
来源:互联网 发布:数据采集卡安装 编辑:程序博客网 时间:2024/05/16 17:31
网上搜集的一份写的灰常漂亮的大数模板。Mark之~~~~
看不懂的自行补脑了 +_+
#include <cstdio>#include <algorithm>#include <cstring>using namespace std;struct BigInteger{ int A[25]; enum{MOD = 10000}; BigInteger(){memset(A, 0, sizeof(A)); A[0]=1;} void set(int x){memset(A, 0, sizeof(A)); A[0]=1; A[1]=x;} void print(){ printf("%d", A[A[0]]); for (int i=A[0]-1; i>0; i--){ if (A[i]==0){printf("0000"); continue;} for (int k=10; k*A[i]<MOD; k*=10) printf("0"); printf("%d", A[i]); } printf("\n"); } int& operator [] (int p) {return A[p];} const int& operator [] (int p) const {return A[p];} BigInteger operator + (const BigInteger& B){ BigInteger C; C[0]=max(A[0], B[0]); for (int i=1; i<=C[0]; i++) C[i]+=A[i]+B[i], C[i+1]+=C[i]/MOD, C[i]%=MOD; if (C[C[0]+1] > 0) C[0]++; return C; } BigInteger operator * (const BigInteger& B){ BigInteger C; C[0]=A[0]+B[0]; for (int i=1; i<=A[0]; i++) for (int j=1; j<=B[0]; j++){ C[i+j-1]+=A[i]*B[j], C[i+j]+=C[i+j-1]/MOD, C[i+j-1]%=MOD; } if (C[C[0]] == 0) C[0]--; return C; }};int main() { BigInteger a, b; a.set(1); b.set(1); (a+b).print(); return 0;}
- C++大数模板 BigInteger
- 刘汝佳 BigInteger 大数模板
- 大数加法模板(c++)
- java 大数BigInteger总结
- C++ 大数算术 BigInteger
- Java大数-BigInteger BigDecimal
- Java大数BigInteger BigDecimal
- 大数BigInteger总结
- java 大数BigInteger总结
- java 大数BigInteger总结
- java大数BigInteger总结
- c语言大数mod模板
- JAVA大数处理(BigInteger,BigDecimal)
- 大数类java.math.BigInteger
- JAVA大数处理(BigInteger,BigDecimal)
- JAVA 大数(BigInteger) 归纳总结 .
- JAVA 大数(BigInteger) 归纳总结
- JAVA大数处理(BigInteger,BigDecimal)
- java学习线路
- python爬虫教程大全
- 中文分词---2011-10-25 22:42 Lucene分词实现(二次开发流程)
- 对 Linux 用户非常有用的 60 个命令(由浅入深)
- CodeSmith----02.生成数据库表对应实体
- C++大数模板 BigInteger
- Android+SQLite将txt等文本文件转化为db数据库文件的方法
- 内核 驱动 硬件直接的关系
- Mysql,postgreSQL和sqlite的技术简单对比
- HDU-4463-Outlets -最小生成树
- JVM基础研究整理之对象大小
- Android之内存泄漏调试学习与总结(转载)
- Java I/O流-总结(InputStream,OutputStream,Reader,Writer)
- poj 3085 Quick Change