HDU 1002 A + B Problem II(高精度加法(C++/Java))

简介: A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 347161    Accepted Submissio...

A + B Problem II

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


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
Author
Ignatius.L
分析:高精度计算,大数相加!模版在博客中已给出,翻翻看,按照模版写就行了,要注意细节,空格的输出,因为这个PE了2次!
下面给出AC代码:
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     char a1[1005],b1[1005];
 6     int a[1005],b[1005],c[1005];//a,b,c分别存储加数,加数,结果
 7     int x,i,j,n;
 8     int lena,lenb,lenc;
 9     while(scanf("%d",&n)!=EOF)
10     {
11         for(j=1;j<=n;j++)
12         {
13             memset(a,0,sizeof(a));//数组a清零
14             memset(b,0,sizeof(b));//数组b清零
15             memset(c,0,sizeof(c));//数组c清零
16             scanf("%s%s",&a1,&b1);
17             lena=strlen(a1);
18             lenb=strlen(b1);
19             for(i=0;i<=lena;i++)
20                 a[lena-i]=a1[i]-'0';//将数串a1转化为数组a,并倒序存储
21             for(i=0;i<=lenb;i++)
22                 b[lenb-i]=b1[i]-'0';//将数串b1转化为数组a,并倒序存储
23             x=0;//x是进位
24             lenc=1;//lenc表示第几位
25             while(lenc<=lena||lenc<=lenb)
26             {
27                 c[lenc]=a[lenc]+b[lenc]+x;//第lenc位相加并加上次的进位
28                 x=c[lenc]/10;//向高位进位
29                 c[lenc]%=10;//存储第lenc位的值
30                 lenc++;//位置下标变量
31             }
32             c[lenc]=x;
33             if(c[lenc]==0)//处理最高进位
34                 lenc--;
35             printf("Case %d:\n",j);//格式要求吧!学着点
36              printf("%s + %s = ",a1,b1);//这也是格式要求吧!学着点
37             for(i=lenc;i>=1;i--)
38             printf("%d",c[i]);
39             printf("\n");
40             if(j!=n)//对于2组之间加空行的情况
41             printf("\n");
42         }
43     }
44     return 0;
45 }

 java写法大数,真是有毒!

 1 import java.math.BigInteger;
 2 import java.util.Scanner;
 3 
 4 public class Main {
 5 
 6     /**
 7      * @param args
 8      */
 9     public static void main(String[] args)
10     {
11         // TODO Auto-generated method stub
12        //System.out.println("Hello World!");
13        Scanner in=new Scanner(System.in);
14        while(in.hasNextInt())
15        {
16 //           int []arr=new int[3];
17            int  n;
18            n=in.nextInt();
19            for(int i=1;i<=n;i++)
20            {
21                BigInteger a,b;
22                a=in.nextBigInteger();
23                b=in.nextBigInteger();
24                if(i<n)
25                {
26                    System.out.println("Case "+i+":");
27                    System.out.print(a+" + "+b+" = ");
28                    System.out.println(a.add(b));
29                    System.out.println();
30                }
31                else
32                {
33                    System.out.println("Case "+i+":");
34                    System.out.print(a+" + "+b+" = ");
35                    System.out.println(a.add(b));
36                }
37            }
38        }
39     }
40 }

 

目录
相关文章
|
4月前
|
Java Android开发 C++
Java和C++
Java和C++
77 15
WK
|
5月前
|
安全 Java 编译器
C++和Java哪个更好用
C++和Java各具优势,选择取决于项目需求、开发者偏好及目标平台特性。C++性能出色,适合游戏、实时系统等;Java平台独立性强,适合跨平台、安全敏感应用。C++提供硬件访问和灵活编程范式,Java有自动内存管理和丰富库支持。两者各有千秋,需根据具体需求选择。
WK
151 1
|
6月前
|
IDE Java 程序员
C++ 程序员的 Java 指南
一个 C++ 程序员自己总结的 Java 学习中应该注意的点。
53 5
|
10月前
|
Java API C++
Java JNI开发时常用数据类型与C++中数据类型转换
Java JNI开发时常用数据类型与C++中数据类型转换
354 0
|
6月前
|
缓存 并行计算 Java
C++矢量运算与java矢量运算
本文探讨了C++和Java中的矢量运算与标量运算的性能比较,解释了矢量运算的原理和为什么它比标量运算快,包括并行性、数据局部性、指令优化和数据重用等优势。文章还提供了C++和Java的矢量运算示例代码,并展示了运行结果,以证明矢量运算在处理大量数据时的性能优势。
64 0
C++矢量运算与java矢量运算
WK
|
5月前
|
开发框架 移动开发 Java
C++和Java哪个更适合开发移动应用
本文对比了C++和Java在移动应用开发中的优劣,从市场需求、学习难度、开发效率、跨平台性和应用领域等方面进行了详细分析。Java在Android开发中占据优势,而C++则适合对性能要求较高的场景。选择应根据具体需求和个人偏好综合考虑。
WK
143 0
WK
|
5月前
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
248 0
|
7月前
|
Java Android开发 C++
🚀Android NDK开发实战!Java与C++混合编程,打造极致性能体验!📊
在Android应用开发中,追求卓越性能是不变的主题。本文介绍如何利用Android NDK(Native Development Kit)结合Java与C++进行混合编程,提升应用性能。从环境搭建到JNI接口设计,再到实战示例,全面展示NDK的优势与应用技巧,助你打造高性能应用。通过具体案例,如计算斐波那契数列,详细讲解Java与C++的协作流程,帮助开发者掌握NDK开发精髓,实现高效计算与硬件交互。
250 1
|
9月前
|
Java Android开发 C++
🚀Android NDK开发实战!Java与C++混合编程,打造极致性能体验!📊
【7月更文挑战第28天】在 Android 开发中, NDK 让 Java 与 C++ 混合编程成为可能, 从而提升应用性能。**为何选 NDK?** C++ 在执行效率与内存管理上优于 Java, 特别适合高性能需求场景。**环境搭建** 需 Android Studio 和 NDK, 工具如 CMake。**JNI** 构建 Java-C++ 交互, 通过声明 `native` 方法并在 C++ 中实现。**实战** 示例: 使用 C++ 计算斐波那契数列以提高效率。**总结** 混合编程增强性能, 但增加复杂性, 使用前需谨慎评估。
214 4
|
8月前
|
Rust 安全 Java
Java代码规范--排版,命名.:Rust能否撼动C++的王座?
系统编程是计算机科学的核心,C++长期占据主导地位,但其内存安全问题备受诟病。Rust以安全性为核心,通过所有权和生命周期概念避免了野指针和内存泄漏。此外,Rust的并发模型和日益丰富的生态系统使其成为现代系统编程的新选择,尤其在安全性和并发性方面表现出色。尽管C++依然强大,但Rust为开发者提供了更安全、易管理的选项,未来有望推动更多系统级应用的发展。
53 0

热门文章

最新文章