HDOJ1002 A + B Problem II(大数)

来源:互联网 发布:数据挖掘:概念与技术 编辑:程序博客网 时间:2024/06/01 20:22

题目链接:点击打开链接


简单的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对于大数操作是多么的方便~

1 0
原创粉丝点击