c/c++语言 超大数加法【完美实现】

178 阅读1分钟

本文已参与「新人创作礼」活动.一起开启掘金创作之路。

作为再一次吃螃蟹不客气的天才,人狠话不多,想实现什么跟我说。于是咱们不废话了,直接开整。这次实现的是比cpp快100%的大数加法,纯char实现很牛币的。

#include<stdio.h>
#include<stdlib.h>
char*BigPlus(const char*m,const char*n){
  if(m[0]==0||n[0]==0)return NULL;
  int i=0,l=0,z=0,x,y;
  char*j=(char*)calloc(999,sizeof(char));
  while(m[++i]);while(n[++l]);y=x=i>l?i:l;
  while(y>z){
    if(i)j[y]+=m[--i];if(l)j[y]+=n[--l];
    if(j[y]>0x69){
      j[y-1]+=1;j[y]%=0x3a;
      if(y==1)j[0]=0x31,--z;
    }else if(j[y]>0x5f){
      j[y]-=0x30;
    }else if(j[y]>0x39){
      j[0]=0x31,--z;j[y]-=0xa;
    }--y;
  }
  if(!z){while(i<x)j[i]=j[i+1],++i;j[i]=0;}
  return j;
}//最高性能大数加法
int main(){
  char m[998],n[998];scanf("%s %s",m,n);
  char*r=BigPlus(m,n);printf("%s",r);free(r);
  return 0;
}//老铁请双击留言+关注,或者三连,点赞收藏加关注最强牛逼无敌程序员本人