首页 > 其他分享 >高精度加减乘

高精度加减乘

时间:2024-08-18 08:56:35浏览次数:13  
标签:return string 高精度 int 加减 -- length ans

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[10088],b[10087],c[10087];
string mem("0123456789ABCDEF");
bool check_(string a,string b){
	if(a.length()>b.length())return 1;
	if(b.length()>a.length())return 0;
	for(int i=0;i<a.length();i++){
		if(a[i]>b[i])return 1;
		if(a[i]<b[i])return 0;
	}
	return 1;
}
int search_(char x){
	for(int i=0;i<mem.length();i++){
		if(mem[i]==x){
			return i;
		}
	}
}
string sub_(string x,string y){
	string ans="";
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
	if(!check_(x,y))swap(x,y);
	int xl=x.length(),yl=y.length(),p=max(xl,yl);
	for(int i=xl-1,j=1;i>=0;i--,j++)a[j]=search_(x[i]);
	for(int i=yl-1,j=1;i>=0;i--,j++)b[j]=search_(y[i]);
	for(int i=1;i<=p;i++){
		if(i!=p){
			a[i]+=10;
			a[i+1]--;
		}
		c[i]=a[i]-b[i];
	}
	for(int i=1;i<p;i++){
		c[i+1]+=(c[i]/10);
		c[i]=c[i]%10;
	}
	for(;!c[p];)p--;
	for(int i=p;i>=1;i--)ans+=mem[c[i]];
	if(ans.empty())return "0";
	return ans;
}
string mult_(string x,string y){
	if(x=="0"||y=="0")return "0";
	string ans;
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
	int xl=x.length(),yl=y.length(),p=xl+yl;
	for(int i=1,j=xl-1;i<=xl;i++,j--)a[i]=search_(x[j]);
	for(int i=1,j=yl-1;i<=yl;i++,j--)b[i]=search_(y[j]);
	for(int i=1;i<=yl;i++){
		for(int j=1;j<=xl;j++){
			c[j+i-1]+=(a[j]*b[i]);
		}
	}
	for(int i=2;i<=p;i++){
		c[i]+=(c[i-1]/10);
		c[i-1]=c[i-1]%10;
	}
	
	for(;!c[p];)p--;
	for(int i=p;i>=1;i--)ans+=mem[c[i]];
	return ans;
}
string and_(string x,string y,int n){
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
	int xl=x.length(),yl=y.length(),p=max(xl,yl);
	for(int i=xl-1,j=1;i>=0;i--,j++)a[j]=search_(x[i]);
	for(int i=yl-1,j=1;i>=0;i--,j++)b[j]=search_(y[i]);
	for(int i=1;i<=p+1;i++)c[i]=a[i]+b[i];
	for(int i=2;i<=p+1;i++){
		c[i]+=(c[i-1]/n);
		c[i-1]=c[i-1]%n;
	}
	p++;
	for(;!c[p];)p--;
	string ans="";
	for(int i=p;i>=1;i--)ans+=mem[c[i]];
	return ans;
}

标签:return,string,高精度,int,加减,--,length,ans
From: https://www.cnblogs.com/wertyuio1/p/18365258

相关文章

  • 高精度减法与混合加法
    高精度减法bigNumbigSub(bigNum*a,bigNum*b){ bigNumc; for(inti=0;i<a->len||i<b->len;i++) { if(a->num[i]<b->num[i]) { a->num[i]+=10; a->num[i+1]-=1; } c.num[i]=a->num[i]-b->num[i];......
  • 【漫谈C语言和嵌入式007】AD2S1210简介与应用:高精度旋转变压器到数字转换器的解析
            在精密运动控制和测量系统中,旋转变压器(Resolver)是一种常用的传感器,能够精确检测旋转轴的位置和速度。为了将旋转变压器的模拟信号转换为数字信号,便于微控制器或DSP进行处理,AD2S1210作为一款高性能的旋转变压器到数字转换器(RDC),为工程师提供了高精度、低延迟的......
  • 浮点数的加减乘除运算细节
    浮点数的加法和减法运算是计算机中最常见也是最复杂的运算之一。由于浮点数的内部表示由符号(Sign)、指数(Exponent)和尾数(Mantissa)三部分组成,浮点数的加减法运算必须处理这些部分之间的复杂关系。以下是浮点数相加或相减的详细运算步骤:1.浮点数表示的回顾符号位(Sign):表示浮点数的......
  • 高精度运算——大数加法与乘法
    要点:加法直接传递进位,乘法先保留进位,后统一处理使用int数组存储,空间浪费,处理方便建立bigNum结构(或类),处理清晰方便代码:基础定义#include<bits/stdc++.h>usingnamespacestd;charnum1[10000];charnum2[10000];structbigNum{ intnum[1000]={}; intlen;};vo......
  • SciTech-BigDataAIML-LLM-Transformer Series-Positional Encoding: 位置编码: 统计模
    词汇WE(WordEmbedding):词嵌入PE(PositionalEncoding):位置编码统计模型和大数据的本源是由"MI(移动互联网)"和"IoT(万物互联)"决定的1真正改驱“改革生产生活习惯”的是“国家政策”与“政府”。新经济的产生是以“改革生产生活习惯”为前提.生产生活的习惯改变:行政......
  • 高精度光学测量工具MXoptiCal,分分钟搞定实车测试数据对标
    一、产品概述  在实车ADAS/AD功能测试时,工程师需要在车上安装更高精度的传感器来对车辆的参照物距离进行准确测量,从而判断ADAS/AD功能实现的准确性,因此也需要车上准确的对照点位置。 MXoptiCal是由德国MdynamiX公司开发的一款高精度光学测量工具,旨在实现简便且重复性高的......
  • 浮点高精度
    简单封装了一下浮点加法乘法,未验证structBigFloat{staticconstintN=100,n=16;//位数,保留位数vector<int>integer;//整数部分(逆序存储)123.-->321.vector<int>decimal;//小数部分(正序存储).456-->.456intintegerSize;//整数长度intdecim......
  • AI在医学领域:nnSynergyNet3D高精度分割肝硬化肝脏体MRI图像
    关键词:肝硬化肝脏分割、协同深度学习模型、跨模态泛化    肝硬化是慢性肝病(CLD)的最后阶段,是一个重大的全球性健康问题。2019年,它是全球死亡原因的第11位,占全球死亡人数的2.4%。尽管病毒性肝炎仍然是终末期肝病的主要原因,但与代谢功能障碍相关的脂肪肝病(MASLD)预计将由于......
  • 三个数字的加减乘除模运算
    Console.WriteLine("请输入第一个数字:");doubled1=double.Parse(Console.ReadLine());Console.WriteLine("请输入第二个数字:");doubled2=double.Parse(Console.ReadLine());Console.WriteLine(&......
  • 高精度计算器1.0
    今天闲来无事,写一个 高精度计算器,嘻嘻ヾ(≧▽≦*)o新手蒟蒻,望大家多关照呀,[]~( ̄▽ ̄)~*还想看什么,留言告诉我呀,o(* ̄▽ ̄*)ブ#include<bits/stdc++.h>//万能头文件#include<stdlib.h>//如果用system函数,需要用到此头文件#include<windows.h>//如果用SetConsoleTextAttribu......