之前的模板因为用了string类,以及运算的时候常数太大,导致速度太慢,虽然比较方便但不算很通用,所以存一波kuangbin大大的模板

/** 高精度,支持乘法和加法*/
struct BigInt
{const static int mod = 10000;const static int DLEN = 4;int a[600],len;BigInt(){memset(a,0,sizeof(a));len = 1;}BigInt(int v){memset(a,0,sizeof(a));len = 0;do{a[len++] = v%mod;v /= mod;}while(v);}BigInt(const char s[]){memset(a,0,sizeof(a));int L = strlen(s);len = L/DLEN;if(L%DLEN)len++;int index = 0;for(int i = L-1;i >= 0;i -= DLEN){int t = 0;int k = i - DLEN + 1;if(k < 0)k = 0;for(int j = k;j <= i;j++)t = t*10 + s[j] - '0';a[index++] = t;}}BigInt operator +(const BigInt &b)const{BigInt res;res.len = max(len,b.len);for(int i = 0;i <= res.len;i++)res.a[i] = 0;for(int i = 0;i < res.len;i++){res.a[i] += ((i < len)?a[i]:0)+((i < b.len)?b.a[i]:0);res.a[i+1] += res.a[i]/mod;res.a[i] %= mod;}if(res.a[res.len] > 0)res.len++;return res;}BigInt operator *(const BigInt &b)const{BigInt res;for(int i = 0; i < len;i++){int up = 0;for(int j = 0;j < b.len;j++){int temp = a[i]*b.a[j] + res.a[i+j] + up;res.a[i+j] = temp%mod;up = temp/mod;}if(up != 0)res.a[i + b.len] = up;}res.len = len + b.len;while(res.a[res.len - 1] == 0 &&res.len > 1)res.len--;return res;}void output(){printf("%d",a[len-1]);for(int i = len-2;i >=0 ;i--)printf("%04d",a[i]);printf("\n");}
};

kuangbin大数模板(加法和乘法)相关推荐

  1. 经典的大数的加法、减法、乘法及阶乘

    大数加法 你需要知道的事:两个长度分别为length1和length2(length2 > length1)的正整数,如果相减则可能是一个长度为length2或者length2 - 1的数,如果 ...

  2. c++ 大数类 大数模板

    分别使用C++中的运算符重载的方法来实现大数之间的数学运算,包括加法.减法.乘法.除法.n次方.取模.大小比较.赋值以及输入流.输出流的重载.. 并且使用这个大数模板,顺利AC了HDOJ上的1134这 ...

  3. javascript乘法和加法_js 大整数加法、乘法、除法

    有一定的编程经验的人都知道,当我们对数据操作的时候,若数据过大,计算机将这个大数从十进制的转为二进制的,是没有那个类型的放的了的,因此,我们经常将一个大数转化为字符串来操作.接下来我将演示大整数的加法 ...

  4. hdu 1134 卡特兰数(大数模板)

    卡特兰数 递推公式: C(n)=C(2n,n)/(n+1)  即用数组表示为c[i]=c[i-1]*(4*i-2)/(i+1); 一般形式 直接 表达 c[1]=1; for(i=2;i<40; ...

  5. c语言加法减法乘法,一元多项式的加法减法乘法c语言描述线性表应用

    一元多项式的加法减法乘法 --(c语言描述)线性表应用 来源:永远的北邮人 vc6.0下调试通过 #include #include #include #include #include #inclu ...

  6. 【组合数学】基本计数原则 ( 加法原则 | 乘法原则 )

    文章目录 1. 加法原则 ( 1 ) 加法原则 ( 不能叠加 的事件才能用 加法原则 | 适用于 分类选取 ) ( 2 ) 乘法法则 ( 相互独立 的 事件 才能用 乘法法则 | 适用于 分步选择 ) ...

  7. 位运算符实现加法和乘法

    文章目录 加法: 乘法: 问题1: 问题2: 加法: #include <iostream> using namespace std; int main() {int x, y;cin & ...

  8. 2015年第六届蓝桥杯 - 省赛 - C/C++大学B组 - F. 加法变乘法

    加法变乘法 我们都知道:1+2+3+ - + 49 = 1225. 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如:1+2+3+-+10 * 11+12+-+27 * 28+29+ ...

  9. 洛谷 - P3803 【模板】多项式乘法(FFT/NTT)

    题目链接:点击查看 题目大意:给出两个多项式 F( x ) 和 G( x ) 的系数,求其卷积后的系数 题目分析:存一个FFT的模板,原理学不明白,数论和dp都扔给队友了,当个快乐的fw 代码: // ...

最新文章

  1. [转]matlab GUI 新手入门——最基本的几个概念
  2. ViewFlipper的使用
  3. android java设置颜色_java – 设置背景颜色:Android
  4. CRM_MESSAGES_DISPLAY debug
  5. JAVA当中Calendar类打印日历表单
  6. L2-016 愿天下有情人都是失散多年的兄妹 CCCC
  7. 网络基础2-3(TCP协议,三次握手,四次挥手,TIME_WAIT状态的作用,TCP如何保证可靠传输,TCP连接中状态转化,滑动窗口,流量控制,快速重传,拥塞窗口,延迟应答,捎带应答,粘包问题)
  8. linux安装时键盘失灵,在archlinux安装界面这卡住了,鼠标键盘失灵
  9. python如何对文件进行批量命名-利用Python对文件批量重命名
  10. gcc编译出现dlopen、dlerror、dlsym、dlcolse的解决方法
  11. ubuntu pcl 点云库使用
  12. java 504错误怎么解决_前端报504错误如何定位
  13. Win11怎么加入工作组?Win11加入局域网工作组的方法
  14. spring系统学习之控制反转 ioc
  15. latex参考文献生成双语对照文献表
  16. 什么是ANR,如何避免ANR
  17. 导热系数常见测量方法
  18. OpenCV—直线拟合fitLine
  19. SQL Server 沿用上一日的数据
  20. 海豚php增加后台页面,Ajax功能配置步骤 · 从DolphinPHP(海豚PHP)中把ZBuilder移植到oscshop2.0教程 · 看云...

热门文章

  1. Jasypt 加密-整合SpringBoot
  2. Redis添加从节点
  3. 消息中间件的发展过程
  4. 手写自己的MyBatis框架-支持查询缓存
  5. 从ResultSet 说起
  6. RocketMQ消息存储的整体结构
  7. Spring四大模块和设计模式
  8. FastDFS整合SpringBoot - 实现service
  9. 定时任务 - 构建定时任务task
  10. request获得请求行的内容