首页 > 其他分享 >模板(低精转高精, 输出高精, 高精乘, 高精加)

模板(低精转高精, 输出高精, 高精乘, 高精加)

时间:2023-06-13 16:33:18浏览次数:36  
标签:高精加 tem int Number len num 高精 高精乘

struct HighPrecision {
	struct Number{
		int num[20000];
		int len;
	}tem;
	inline void Clear(Number &xxx) {
		xxx.len = 0;
		memset(xxx.num, 0, sizeof(xxx.num));
	}
	inline Number Change(long long a) {
		Clear(tem);
		int len = 0;
		while (a != 0) {
			len ++;
			tem.num[len] = a %10;
			a /= 10;
		}
		tem.len = len;
		return tem;
	}//低精转高精 
	inline Number Addition (Number &a, Number &b) {
		int len = max(a.len, b.len);
		Clear(tem);
		for (int i = 1; i <= len; ++ i) {
			tem.num[i] += (a.num[i] + b.num[i]);
			if (tem.num[i] >= 10) {
				tem.num[i + 1] += (tem.num[i] / 10);
				tem.num[i] %= 10;
			}
		}
		if (tem.num[len + 1] != 0) len ++;
		tem.len = len;
		return tem;
	}//高精加 
	inline Number Product(Number &a, Number b) {
		int len_a = a.len, len_b = b.len, len_c = 0;
		Clear(tem);
		for (int i = 1; i <= len_a + len_b; ++ i) {
			tem.num[i] = 0;
		}//记得初始化 
		for (int i = 1; i <= len_a; ++ i) {
			for (int j = 1; j <= len_b; ++ j) {
				tem.num[i + j - 1] += a.num[i] * b.num[j];
				len_c = max(len_c, i + j - 1);
			}
		}
		for (int i = 1; i <= len_c; ++ i) {
			tem.num[i + 1] += (tem.num[i] / 10);
			tem.num[i] %= 10;
			if (i == len_c && tem.num[i + 1] != 0) {
				len_c += 1;
			}
		}
		while (tem.num[len_c] == 0) {
			len_c --;
		}
		tem.len = len_c;
		return tem;
	}//高精乘法 
	inline void Print(Number &x) {
		for (int i = x.len; i >= 1; -- i) {
			cout << x.num[i];
		}
		cout << endl;
		return;
	}//输出 
}Use;

标签:高精加,tem,int,Number,len,num,高精,高精乘
From: https://www.cnblogs.com/jueqingfeng/p/17478002.html

相关文章

  • 压位高精度模板(加,减,乘)
    structbignum{ #definebase10000 inta[20000]; bignum(){memset(a,0,sizeof(a));}inlinevoidinit(){memset(a,0,sizeof(a));a[0]=1;a[1]=1;} inlinevoidread(){staticchars[1000];scanf("%s",s);intn=strlen(s),len=1; for......
  • 【基础算法】关于高精度计算的问题【很高位数数据的加减乘除(相关代码用C++实现)】
    前言当我们在利用计算机进行一些计算时,可能会遇到这类问题:有些计算要求精度高,希望计算的数的位数可达几十位甚至几百位,虽然计算机的计算精度也算较高了,但因受到硬件的限制,往往达不到实际问题所要求的精度。这时我们就可以通过程序设计来解决这类问题,例如:<fontcolor=red>创建......
  • 应用案例分享 | 基于高精度三维机器视觉的机房硬盘插拔系统应用
    Part.1 行业背景随着信息化建设的不断深入,数据存储需求不断增长,机房中的硬盘插拔操作变得越来越频繁。然而,由于机房环境的复杂性、硬盘插拔操作的关键性和重复性,人为因素可能导致插拔错误、设备损坏甚至数据丢失。为了提高硬盘插拔操作的准确性、效率和安全性,机房硬盘拔插系统应运......
  • 高精度模板
    xiayicheng的高精模板,可自取介绍各变量作用变量名作用\(len\)存储数字长度\(symbol\)存储数字符号,\(1\)为负,\(0\)为正\(s\)倒序存储数字功能\(^*\)变量赋值:\(\texttt{int,char,Bigint}\)比较大小:\(\texttt{Bigint}\)加减法:\(\texttt{Bigint}\)......
  • 高精度加法(含代码)
    高精度加法例1例如:1111111111111+9,列成竖式,1111111111111+9---------------------------先算个位,1+9=10,满10,向十位进1。1111111111111+9......
  • 高精度模板-结构体
    #include<iostream>#include<cstring>#include<cstdio>#include<cmath>usingnamespacestd;structBigNum{intlen,s[9999];BigNum(){memset(s,0,sizeof(s));len=1;}BigNumoperator=(......
  • 以太网IO模块:高精度数据采集和快速传输
    随着工业自动化的不断发展和普及,以太网IO模块被广泛应用于控制和监测系统中。该模块具有高精度数据采集和快速传输等特点,使其成为工业自动化应用中不可或缺的重要器件。深圳市钡铼技术有限公司是一家高新技术企业,【钡铼】与【BLIIOT】都是公司品牌,专注工业物联网关、工业智能网关、......
  • 高精度算法
    先来看一下每个数据类型可表示的数据范围当我们要表示的数很长时,无法用数据类型表示,可以用数组存储单精度:能用一个内置类型存储的整数高精度:不能用内置类型存储的大整数,通常用数组存储每一个数位建议使用小端存储(个位放在最前面)(原因:大端存储虽然看似更直观,但是当处理进位时就会遇到......
  • FPGA高速数据接收设计,多路高精度AD1246数据采集
    FPGA高速数据接收设计,多路高精度AD1246数据采集ID:67500621181984267......
  • P1134高精度
    #include<bits/stdc++.h>usingnamespacestd;intmain(){intN;while(cin>>N){inta[3001]={0};inti=0;a[0]=1;while(N){for(i=0;i<3001;i++){......