zoukankan      html  css  js  c++  java
  • hdu1002 A + B Problem II(大数题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002

    A + B Problem II

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 230247    Accepted Submission(s): 44185


    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

    题目大意:题意很容易理解,具体就不解释了,主要就是要解决大数的问题。

    题目思路:如果会java的话,可以轻松AC。其他的小伙伴们只能用最笨的方法解决。我们用一个数字将数字倒过来存下,无论是乘法还是加法,这是最好的解决办法。

    下面附上两个代码。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 
     5 using namespace std;
     6 
     7 int main ()
     8 {
     9     char a[8000],b[8000];
    10     int na[8000],nb[8000],sum[8000],pre,flag=1;
    11     int t;
    12     scanf("%d",&t);
    13         while (t--)
    14         {
    15             memset(sum,0,sizeof(sum));
    16             memset(na,0,sizeof(na));
    17             memset(nb,0,sizeof(nb));
    18             scanf("%s%s",a,b);
    19             pre=0;
    20             int lena=strlen(a);
    21             int lenb=strlen(b);
    22             for (int i=0; i<lena; i++)
    23                 na[lena-1-i]=a[i]-'0';
    24             for (int j=0; j<lenb; j++)
    25                 nb[lenb-1-j]=b[j]-'0';
    26             int lenx=lena>lenb?lena:lenb;
    27             for (int k=0; k<lenx; k++)
    28             {
    29                 sum[k]=na[k]+nb[k]+pre/10;
    30                 pre=sum[k];
    31             }
    32             while (pre>9)
    33             {
    34                 sum[lenx]=pre/10%10;
    35                 lenx++;
    36                 pre/=10;
    37             }
    38             printf ("Case %d:
    ",flag++);
    39             printf ("%s + %s = ",a,b);
    40             for (int i=lenx-1; i>=0; i--)
    41             {
    42                 printf ("%d",sum[i]%10);
    43             }
    44             printf ("
    ");
    45             if (t)
    46                 printf ("
    ");
    47         }
    48 
    49     return 0;
    50 }

    java代码。

     1 import java.util.*;
     2 import java.math.*;
     3 public class Main {
     4     public static void main(String[] args) {
     5         Scanner sc=new Scanner (System.in);
     6         int l=sc.nextInt();
     7         for(int i=1;i<=l;i++){
     8             if(i!=1) System.out.println();
     9             BigInteger a,b;
    10             a=sc.nextBigInteger();
    11             b=sc.nextBigInteger();
    12             System.out.println("Case "+i+":");
    13             System.out.println(a+" + "+b+" = "+a.add(b));
    14         }
    15     }
    16 }
  • 相关阅读:
    OpenSeadragon 基础显示图片 学习记录 (一)
    数组篇【第一集】
    css如何让页面上的文字不能选中??
    toggleClass()原来是这么用的
    vue-gemini-scrollbar(vue组件-自定义滚动条)
    css绝对底部的实现方法
    Select下拉框需求
    iview之Model对话框封装
    Java基础(一)
    vue-draggable-resizable插件的API记录
  • 原文地址:https://www.cnblogs.com/qq-star/p/4166105.html
Copyright © 2011-2022 走看看