您的位置:首页 > 其它

HDOJ1002 A + B Problem II(大数)

2015-09-25 22:43 344 查看
题目链接:点击打开链接

简单的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对于大数操作是多么的方便~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: