高精度加法

简介: 高精度加法高精度加法
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<algorithm>  
#include<map>
#include<vector>
#include<queue> 
using namespace std;  
struct bign {
  int d[1000];
  int len;
  bign(){ //构造函数,初始化结构体
    memset(d,0, sizeof(d));
    len=0;
  }
};
bign change(char str[]){    //将整数转换成bign
  bign a;
  a.len=strlen(str);
  for( int i=0;i<a.len ; i++) {
    a.d[i]=str[a.len-i-1] - '0';
  }
  return a;
}
bign add(bign a,bign b){  //高精度a+b
  bign c;
  int carry=0;  //carry是进位
  for(int i=0;i<a.len || i<b.len;i++){ //以较长的为界限
    int temp=a.d[i]+b.d[i]+carry; //两个对应位与进位相加
    c.d[c.len++]=temp% 10; //个位数为该位结果
    carry=temp /10; //十位数为新的进位
  }
  if(carry !=0){ //如果最后进位不为0,则直接赋给结果的最高位
    c.d[c.len++]=carry;
  }
  return c;
}
void print(bign a){ //输出bign
  for(int i=a.len-1; i>=0;i--){
    printf("%d",a.d[i]);
  }
}
int main(){   
  char str1[1000],str2[1000];
  scanf("%s%s",str1,str2);
  bign a=change(str1);
  bign b=change(str2);
  print(add(a,b));
  system("pause");
  return 0;
}
相关文章
|
Java C++
poj 1503 高精度加法
把输入的数加起来,输入0表示结束。 先看我Java代码,用BigINteger类很多东西都不需要考虑,比如前导0什么的,很方便。不过java效率低点,平均用时600ms,C/C++可以0ms过。
43 1
筛质数、分解质因数和快速幂的应用
筛质数、分解质因数和快速幂的应用
61 0
|
16天前
辗转相除法
【10月更文挑战第21天】辗转相除法。
25 2
|
6月前
D - 11(逆元好题)
D - 11(逆元好题)
|
6月前
|
人工智能 Java C++
分解质因数
分解质因数
52 1
|
6月前
|
人工智能 Java BI
快速幂讲解
快速幂讲解
44 0
|
11月前
分解质因数答疑
为什么n % i == 0就是质数 因为在枚举到i之前已经把n中2到i-1的质因子除干净了,此时n中不含2到i-1的质因子,由于n为i的倍数,所以i中也不包含2到i-1的质因子。如果i可以整除前面的i - 1中的数那么i = x * (i - 1),n = x2 * (x * (i - 1)); 矛盾了 为什么只需要枚举到根号N
86 2
|
Java C++
高精度加法 A+B 问题
高精度加法 A+B 问题
|
物联网
快速幂
快速幂
80 0