首页 > 其他分享 >P1000 高精度加法

P1000 高精度加法

时间:2023-02-09 20:22:30浏览次数:40  
标签:insert string 48 高精度 P1000 length result 加法 carry

高精度问题

C语言解决高精度问题需要使用模拟的方法来解决问题。
我们进行模拟的时候要反过来,我们输入的时候要从低位往高位,但是我们算的时候要从高位往低位算。

代码案例

# include <iostream>
# include <string>
# include <algorithm>
using namespace std;
//返回一个string类结果;
string Add(string a,string b){
	if(a.length()<b.length()) a.swap(b) ;//要求效果a的长度大于b的长度
	string result(a.length(),0);//初步设置result长度为较长字符的长度,内容全部为0
	b.insert(0,a.length()-b.length(),'0');//较短的字符串前面补0方便计算
	int carry=0; //设置进位信号
	for(int i=a.length()-1;i>=0;i--){
		int sum=(a[i]-48)+(b[i]-48)+carry;
		carry = sum/10;
  		result[i]=sum%10+48;
	}
	if(carry!=0){
		result.insert(result.begin(),carry+48);			   
	}
	return result;
}
int main(){
	string a,b;
	while(cin>>a>>b)
	{
		cout<<Add(a,b)<<endl;
	}
	return 0;
}

函数分析

01-swap函数

Swap函数不是交换两个 容器的内容,而是交换了两个容器的内存地址。

if(a.length()<b.length()) a.swap(b) ;//要求效果a的长度大于b的长度

以上代码的涵义是:判断a的代码长度是否小于b的代码长度,如果小于,则进行转换,最终效果为a为较长的字符串,b为较短的字符串

02-string关键字

string result(a.length(),0);

以上代码的涵义是 :定义一个string类变量,变量名为result,长度为较长的字符串长度,内容为0

03-insert函数

b.insert(0,a.length()-b.length(),'0');//较短的字符串前面补0方便计算

在b的开头位插入a.length()-b.length()个'0',达到的效果为如果原本a=123,b=1,实际数组进行运算时候a=123,b=001,然后再倒过来运算。

	if(carry!=0){
		result.insert(result.begin(),carry+48);			   
	}

达到的效果是,如果产生了进位,则将进位插入到起始位置。

标签:insert,string,48,高精度,P1000,length,result,加法,carry
From: https://www.cnblogs.com/culin/p/17106868.html

相关文章

  • 5.2.2_并行进位加法器
    上一小节我们介绍了一些电路的基本知识,并且利用电路的基本知识,在上一小节的末尾设计了一个比较简单的加法器。这一小节中,我们主要会来探讨这些加法器应该怎么进行改进,使它......
  • AcWing 791. 高精度加法C++数组实现
    高精度加法a,b均为正整数#include<iostream>usingnamespacestd;constintN=100010;intA[N],B[N],C[N];intAdd(inta[],intb[],intc[],intcnt){......
  • 大数加法 减法 模板
    加法:#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<vector>#include<stdlib.h>#include<queue>#include<map>#include<set>#include<io......
  • 函数指针实现加法操作
    1doubleadd(doublex,doubley)2{3returnx+y;4}56//double(*Calulate)(double,double);//声明一个函数指针789doubleCalulate(do......
  • 搞定物联网定位:UWB高精度定位技术原理与实现
    搞定物联网定位:UWB高精度定位技术原理与实现https://mp.weixin.qq.com/s/18kCIFtKCfSQGoZy4NDLaA搞定物联网定位:UWB高精度定位技术原理与实现原创 刘恒进 腾讯云开发......
  • 高精度(有符号)
    #include<bits/stdc++.h>usingnamespacestd;usingll=longlong;structbig_base{ staticconstintL=1E4,MOD=10,B=1; //attention除法效率位数^2*MO......
  • 高精度差分
    四、高精度:1.大整数的存储2.模拟加法的存储123+89=212(Ai+Bi+t)#include<vector>将数组的长度变长例题1.高精度减法#include<iostream>#include<vector>using......
  • 高精度
    当计算位数超过最大存储范围时,无法正常存储而使用数组来存储数据读取stringa,b;cin>>a>>b;//用字符串读取vector<int>A,B;//转换为存储在数组中for(inti......
  • 高精度四则运算
    算法学习的第三天算法学习之高精度四则运算高精度算法(HighAccuracyAlgorithm)是处理大数字的数学计算方法。在一般的科学计算中,会经常算到小数点后几百位或者更多,当然......
  • [简单DP+高精度]围墙重建
    题目描述为了给同学们营造一个良好的学习环境和方便学校的管理,市政府准备对小W就读的学校进行重新规划,占地面积将再次扩大。学校通过领导会议决定,重建学校的围墙。由......