2025年5月21日 星期三 乙巳(蛇)年 二月廿三 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > C语言

高精度加法

时间:04-17来源:作者:点击数:52

题目描述

高精度加法,相当于a+b problem,不用考虑负数.

输入格式

分两行输入。a,b ≤10500

输出格式

输出只有一行,代表a+b的值

  • #include<bits/stdc++.h>
  • using namespace std;
  • typedef long long ll;
  • const int MAXSIZE = 1000;//最大位数
  • string stra,strb;
  • int a[MAXSIZE],b[MAXSIZE],c[MAXSIZE];
  • //模拟竖式计算
  • int add(int a[],int b[]){
  • int x(0)/*进位*/,i(0)/*长度*/;
  • while(i<=stra.length() || i<=strb.length()){
  • c[i] = a[i] + b[i] + x;//模拟列竖式计算的过程
  • x = c[i]/10;//进位
  • c[i] %= 10;
  • i++;
  • }
  • return i;
  • }
  • //初始化,将字符串倒序存储至int 数组中
  • void init(string s,int n[]){
  • for(int i=s.length()-1;i>=0;i--)
  • n[s.length()-i-1] = s[i]-'0';
  • }
  • //打印a+b的值
  • void print(int a[],int b[]){
  • int n = add(a,b);
  • for(int i = n-1;i>=0;i--){
  • if(c[n-1] == 0 && i == n-1) continue;//防止最高位为0
  • cout<<c[i];
  • }
  • }
  • int main(){
  • cin>>stra>>strb;
  • init(stra,a);
  • init(strb,b);
  • print(a,b);
  • return 0;
  • }
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门