A + B Problem II(杭电1002)

/*A + B Problem II

Problem Description

I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B.

Input

The first line of the input contains an integer T(1<=T<=20) which means the number of test cases. Then T lines follow, each line consists of two positive integers, A and B. Notice that the integers are very large, that means you should not process them by using
32-bit integer. You may assume the length of each integer will not exceed 1000.

Output

For each test case, you should output two lines. The first line is "Case #:", # means the number of the test case. The second line is the an equation "A + B = Sum", Sum means the result of A + B. Note there are some spaces int the equation. Output a blank line
between two test cases.

Sample Input

2

1 2

112233445566778899 998877665544332211

Sample Output

Case 1:

1 + 2 = 3

Case 2:

112233445566778899 + 998877665544332211 = 1111111111111111110*/

/*借鉴大神经验。与新手共勉。

*/

#include<stdio.h>
#include<string.h>
int main()
{
    int str1[1100],str2[1100];
    char a[1100],b[1100];
    int test,i,j,t,k=1,len1,len2;
    scanf("%d",&test);
    getchar();
    while(test--)
    {
        char sum[1100]={0};
        scanf("%s %s",a,b);
        getchar();
        len1=strlen(a);
        len2=strlen(b);
        memset(str1,0,sizeof(str1));
        memset(str2,0,sizeof(str2));
        for(i=0,j=len1-1;i<len1;i++,j--)
        str1[j]=a[i]-'0';
        for(i=0,j=len2-1;i<len2;i++,j--)
        str2[j]=b[i]-'0';
        if(len1<len2)
        {
            t=len2;
            len2=len1;
            len1=t;
        }
        for(i=0;i<=len1;i++)
        {
            sum[i]=str1[i]+str2[i]+sum[i];
            if(sum[i]/10>0)
            {
                sum[i+1]=sum[i]/10;
                sum[i]=sum[i]%10;
            }
        }
        printf("Case %d:\n",k);
        k++;
        printf("%s + %s = ",a,b);
        if(sum[len1]!=0)
        printf("%d",sum[len1]);
        for(j=len1-1;j>=0;j--)
        printf("%d",sum[j]);
        printf("\n");
        if(test!=0)
        printf("\n");
    }
    return 0;
}

今天尝试用java写这道大数题目,贴下代码:

import java.math.BigInteger;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner in=new Scanner(System.in);

int test=in.nextInt();

String s1,s2;

int kase=1;

while(test-->0)

{

s1=in.next();

s2=in.next();

BigInteger s3=new BigInteger(s1);

BigInteger s4=new BigInteger(s2);

System.out.println("Case "+kase+++":");

System.out.println(s3+" + "+s4+" = "+s3.add(s4));

if(test!=0)

System.out.println();

}

}

}

时间: 2024-10-10 06:09:33

A + B Problem II(杭电1002)的相关文章

杭电 1002 A + B Problem II(大数处理)

A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 209179    Accepted Submission(s): 40226 Problem Description I have a very simple problem for you. Given two integers A and B, yo

大数A+B 【杭电-1002】 附题

/* A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 209912    Accepted Submission(s): 40404 Problem Description I have a very simple problem for you. Given two integers A and B,

The Hardest Problem Ever(杭电1048)

/*The Hardest Problem Ever Problem Description Julius Caesar lived in a time of danger and intrigue. The hardest situation Caesar ever faced was keeping himself alive. In order for him to survive, he decided to create one of the first ciphers. This c

杭电 1002 A + B Problem II【大数相加】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002 解题思路:就是把大的数用数组存放起来,像小学的时候用竖式加法来算两个数相加那样算: 反思:思路很简单,可是有很多细节考虑不好,有时候没有进位,有时候又没有输出正确的答案,然后有时候数组长度又开小了什么的,所以还要多多练习. #include<stdio.h> #include<string.h> #define max 1000 void add(char a[],char b[

The 3n + 1 problem(杭电1032)(暴力求解)

The 3n + 1 problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 23163    Accepted Submission(s): 8653 Problem Description Problems in Computer Science are often classified as belonging to a

Prime Ring Problem(杭电1016)(DFS)

Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 28204    Accepted Submission(s): 12561 Problem Description A ring is compose of n circles as shown in diagram. Put natural num

Prime Ring Problem HDU 杭电1016

Problem Description A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., n into each circle separately, and the sum of numbers in two adjacent circles should be a prime. Note: the number of first circle should always be 1

杭电1002

//此题的要点在于 把数字当字符串储存 用数组储存//计算的时候注意要减去'0',因为那是我们的字符串//在我们换算 的时候一定要加上temp 我就是因为没加 错了一个下午#include <iostream> #include<string> using namespace std; int main() { int n; cin>>n; int ui=1; while(n--){ string a,b; int sum[1001];//用来放结果 cin>&g

java学习(9):杭电1002.大数处理问题

import java.math.BigDecimal; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String temp1 = null; String temp2 = null; String result = null; int i; int a = scanner.nextI