码风可能对大家来说并不是很重要,原因嘛,可以举一个例子:比如,两行数据,分别是A,B,0<=a,b<=10^300,求A+B的值。这不就是高精度加法嘛! 三种马蜂:
Num.1
#include<bits/stdc++.h>
using namespace std;
char a[301], b[301];
int a1[301], b1[301], c[301], lena, lenb, lenc=1, x=0;
int main(){
cin>> a>> b;
lena=strlen(a);
lenb=strlen(b);
for(int i=0;i<=lena-1;i++) a1[lena-i]=a[i]-48;
for(int i=0;i<=lenb-1;i++) b1[lenb-i]=b[i]-48;
while(lenc<=lena||lenc<=lenb){
c[lenc]=a1[lenc]+b1[lenc]+x;
x=c[lenc]/10;
c[lenc]%=10;
lenc++;
}
c[lenc]=x;
while(c[lenc]==0&&lenc>1) lenc--;
for(int i=lenc;i>=1;i--) cout<<c[i];
return 0;
}
Num.2
#include<bits/stdc++.h>
using namespace std;
char a[301], b[301];
int a1[301], b1[301], c[301], lena, lenb, lenc=1, x;
int main(){
cin>>a>> b;
lena=strlen(a);
lenb=strlen(b);
for(int i=0;i<=lena-1;i++){
a1[lena-i]=a[i]-48;
}
for(int i=0;i<=lenb-1;i++) {
b1[lenb-i]=b[i]-48;
}
while(lenc<=lena||lenc<=lenb){
c[lenc]=a1[lenc]+b1[lenc]+x;
x=c[lenc]/10;
c[lenc]%=10;
lenc++;
}
c[lenc]=x;
while(c[lenc]==0&&lenc>1){
lenc--;
}
for(int i=lenc;i>=1;i--){
cout<<c[i];
}
return 0;
}
Num.3
#include <bits/stdc++.h>
using namespace std;
char a[301], b[301];
int a1[301], b1[301], c[301], lena, lenb, lenc=1, x;
int main(){
cin>> a>> b;
lena = strlen(a), lenb=strlen(b);
for(int i = 0;i <= lena - 1;i++)
{
a1[lena - i]=a[i] - 48;
}
for(int i = 0;i <= lenb - 1;i++)
{
b1[lenb - i]=b[i] - 48;
}
while(lenc <= lena||lenc <= lenb)
{
c[lenc] = a1[lenc] +b1[lenc] +x;
x = c[lenc] / 10;
c[lenc] %= 10;
lenc++;
}
c[lenc] = x;
while(c[lenc] == 0&&lenc > 1)
{
lenc--;
}
for(int i = lenc;i >= 1;i--)
{
cout<< c[i];
}
return 0;
}
当然了,大家的马蜂可能是近似这三种中一,也有可能是差不多的,以上三种,我认为第1种最好,而且我用的马蜂就是这第1种,原因有以下3点:
- 行数少
- 更整洁
- 看了不会混乱