题目链接:点击打开链接
简单的A + B,但是题目中给的数据不超过1000位,爆long long。
java大数写法:
import java.util.*;
import java.io.*;
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
for(int i = 1; i <= n; ++i) {
BigInteger a = cin.nextBigInteger();
BigInteger b = cin.nextBigInteger();
BigInteger ans = a.add(b);
System.out.println("Case " + i + ":");
System.out.println(a + " + " + b + " = " + ans);
if(i != n) System.out.println();
}
}
}
C++ 字符串模拟写法:
#include <stdio.h>
#include <string.h>
char a[1002]={0},b[1002]={0},sum[1002]={0},a1[1002]={0},b1[1002]={0};
int main()
{
int i,j,t,lena,lenb,k;
while(scanf("%d",&t)!=EOF)
{
for(i=0;i<t;i++)
{
scanf("%s%s",a,b);
lena=strlen(a);
lenb=strlen(b);
k=0;
for(j=lena-1;j>=0;j--)
{
a1[k++]=a[j]-'0';
}
k=0;
for(j=lenb-1;j>=0;j--)
{
b1[k++]=b[j]-'0';
}
j=0;
while(j<=lena||j<=lenb)
{
if(sum[j]+a1[j]+b1[j]>=10)
{
sum[j+1]=sum[j+1]+1;
sum[j]=sum[j]+a1[j]+b1[j]-10;
}
else
sum[j]=sum[j]+a1[j]+b1[j];
j++;
}
printf("Case %d:\n",i+1);
printf("%s + %s = ",a,b);
if(sum[j-1])
{
for(k=j-1;k>=0;k--)
printf("%d",sum[k]);
}
else
{
for(k=j-2;k>=0;k--)
printf("%d",sum[k]);
}
printf("\n");
if(i<t-1)
printf("\n");
memset(a,0,sizeof(sum));
memset(b,0,sizeof(sum));
memset(a1,0,sizeof(sum));
memset(b1,0,sizeof(sum));
memset(sum,0,sizeof(sum));
}
}
return 0;
}
可见java对于大数操作是多么的方便~