高精度模板 val.1
同样搬以前初三写的。。。
其实还有个val.2,搬到文章里去了
@
在做一道斯特林数的时候被卡高精。。。于是滚来写一些简单的高精
高精构造
- 这里使用结构体封装,方便使用
 - 尽量避免直接赋等,会加上个On复杂度
 - 所有函数如\(add(a,b)\)是在a上加b,a使用地址,速度较快
 
结构体
struct bigint{
	int length,num[maxn];
	bigint(){
		memset(num,0,sizeof(num));
		length=0;
	}
};
注意:length存0开始的位数,实际有效位数为0~length-1
构造函数能写就写
char数组转高精:
inline void change(char a[],bigint &b){
	b.length=strlen(a);
	for(int i=0;i<b.length;i++){
		b.num[i]=a[b.length-i-1]-'0';//注意要减去‘0’
	}
}
高精加高精
inline void add(bigint &a,bigint &b){
	int ll=max(a.length,b.length);
	int exd=0;
	for(int i=0;i<ll;i++){
		int tmp=a.num[i]+b.num[i]+exd;
		a.num[i]=tmp%10;
		exd=tmp/10;
	}
	a.length=ll;
	if(exd){
		a.num[ll]=exd;
		a.length++;
	}
}
变量维护进位,模拟即可
高精乘单精
inline void mul(bigint &a,int b){
	for(int i=0;i<a.length;i++){
		a.num[i]*=b;
	}
	for(int i=0;i<a.length;i++){
		a.num[i+1]+=a.num[i]/10;
		a.num[i]%=10;
	}//此时ai可能不止一位
	int m=a.num[a.length];
	while(m){
		a.num[(++a.length)-1]=m%10;
		m/=10;
	}//最高位长度处理
}
高精除单精
inline void div(bigint &a,int b){
	int d=0;
	for(int i=a.length-1;i>=0;i--){
		int tmp=d*10+a.num[i];
		a.num[i]=tmp/b;
		d=tmp%b;
	}
	while(a.num[a.length-1]==0){
		a.length--;
	} //去除高位0
}
高精和高精乘除与压位高精就之后再写吧 (
(咕
高精度模板 val.1的更多相关文章
- [Template]高精度模板
		
重新写一下高精度模板(不要问我为什么) 自认为代码风格比较漂亮(雾 如果有更好的写法欢迎赐教 封装结构体big B是压位用的进制,W是每位长度 size表示长度,d[]就是保存的数字,倒着保存,从1开 ...
 - C++高精度模板
		
原文地址:http://blog.csdn.net/wall_f/article/details/8373395 原文只附代码,没有解析,本文增加了一些对代码的解释. 请注意:本模板不涉及实数运算与负 ...
 - [note]高精度模板
		
高精度模板 先定义一个struct struct gj{ int l,s[N]; bool fh; void Print(){ if(fh)putchar('-'); for(int i=l;i> ...
 - 高精度模板 支持各种运算 c++
		
绪言 自从有了高精度模板,妈妈再也不用怕我不会打高精度了! 代码 代码长度与日俱增啊~~~ #include<iostream> #include<cstring> #incl ...
 - JAVA高精度模板
		
刚开始还坚持用C++写高精来着,后来发现JAVA写高精方便太多了,所以也来学习一下JAVA高精度的模板. 参考:https://www.cnblogs.com/imzscilovecode/p/883 ...
 - 高精度模板 Luogu P1932 A+B & A-B & A*B & A/B Problem
		
P1932 A+B & A-B & A*B & A/B Problem 题目背景 这个题目很新颖吧!!! 题目描述 求A.B的和差积商余! 输入输出格式 输入格式: 两个数两行 ...
 - Java 大数、高精度模板
		
介绍: java中用于操作大数的类主要有两个,一个是BigInteger,代表大整数类用于对大整数进行操作,另一个是BigDecimal,代表高精度类,用于对比较大或精度比较高的浮点型数据进行操作.因 ...
 - 高精度模板 洛谷Luogu P1932 A+B & A-B & A*B & A/B Problem
		
P1932 A+B & A-B & A*B & A/B Problem 题目背景 这个题目很新颖吧!!! 题目描述 求A.B的和差积商余! 输入输出格式 输入格式: 两个数两行 ...
 - [SinGuLaRiTy] 复习模板-高精度模板
		
[SinGuLaRiTy-1042] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 结构体封装 //高精度运算 注意%I64d与%lld # ...
 
随机推荐
- 【论文阅读】Deep Mutual Learning
			
文章:Deep Mutual Learning 出自CVPR2017(18年最佳学生论文) 文章链接:https://arxiv.org/abs/1706.00384 代码链接:https://git ...
 - C#Windows Forms 使MessageBox顶层显示--xdd
			
方法1. MessageBox.Show("Text", "Caption", MessageBoxButtons.OK, MessageBoxIcon.Inf ...
 - day 35 协程 IO多路复用
			
0.基于socket发送Http请求 import socket import requests # 方式一 ret = requests.get('https://www.baidu.com/s?w ...
 - day 28  黏包  ssh模块  subprocess模块
			
套接字的信仰 一切皆文件 昨日作业: import socket sock=socket.socket() # TCP协议 IP_PORT=("127.0.0.1",8899) s ...
 - SpringBoot第一次案例
			
一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...
 - 简单地认识一下 HTML
			
简单复盘一下 HTML. 1.HTML 什么是 HTML?HTML 是 Hyper Text Markup Language 的简写,译成中文是「超文本标记语言」. 顾名思义,超文本,就是不止于文本, ...
 - 【数据结构】之栈(C语言描述)
			
栈(Stack)是编程中最常用的数据结构之一. 栈的特点是“后进先出”,就像堆积木一样,堆的时候要一块一块堆到最上面,拆的时候需要从最上面一块一块往下拆.栈的原理也一样,只不过它的操作不叫堆和拆,而是 ...
 - kube-nginx 和 keepalived 部署安装
			
目录 简介 nginx 安装配置 下载编译nginx 配置Nginx文件,开启4层透明转发 配置Nginx启动文件 keepalived 安装配置 安装keeplive服务 配置keeplive服务 ...
 - Python高级数据结构-Collections模块
			
在Python数据类型方法精心整理,不必死记硬背,看看源码一切都有了之中,认识了python基本的数据类型和数据结构,现在认识一个高级的:Collections 这个模块对上面的数据结构做了封装,增加 ...
 - ImSQL:海量数据,可信存储
			
数据造假.数据不可信等问题的存在,给金融监管及风控等众多应用场景带来了严峻的挑战,也正成为阻碍数据大规模互联互通.共享共用的一大障碍.数据的真实可信问题长期影响着社会的各个领域,在更依赖数据的人工智能 ...