java - 两个数相加,twist就是数的长度可以很大

标签 java c swift

<分区>

今天我去面试,面试官要求编写一个两个数相加的程序,我很震惊他怎么能给出一个简单的问题,但问题却不同

the length of two number can be anything (10,20,30 or even 1000 etc.)

  • 如果你将它转换为 int,double,long double 如果数字大于它们的范围,则答案可能是错误的。

请帮我解答这个问题。

最佳答案

您始终可以将这两个数字放入数组中(即数组将数字的数字作为元素)并在我们手动添加时添加它们,即从一个数字开始并存储进位(如果存在)然后对十位数字执行相同的操作,然后是百位等等。

假设您要添加 123 和 329。

X = 123, X[] = [1,2,3]
Y = 329, Y[] = [3,2,9]

您从一个数字(最右边或最后一个元素)开始,添加 X 和 Y 数组的元素并向其添加进位(初始设置为 0)。如果加法大于 10,则设置 carry = sum/10(因为我们要对每个元素进行加法,所以此进位应始终为 0 或 1)并将加法添加到 add [i] = 总和 % 10。重复直到较小数组的所有元素都结束。然后将进位添加到更大数组的剩余元素,继续上述逻辑。

carry = 0
Step 1 : 3 + 9 + carry (0) = 5, carry => 12 / 10 = 1, add => 12 % 10 = 2
Step 2 : 2 + 2 + carry (2) = 6, carry => 6 / 10 = 0, add => 6 % 10 = 6
Step 3 : 3 + 1 + carry (0) = 4, carry => 4 / 10 = 0, add => 4 % 10 = 4

答案 = 462

显然,存储总和的数组可能多出一位数字,因此也要注意这一点。

关于java - 两个数相加,twist就是数的长度可以很大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44550175/

相关文章:

macos - Swift IBOutlets 在 awakeFromNib 中为零(xcode 6.1.1 osx 10.10.1)

swift - 在 UIWebView 中加载本地 HTML 文件

java - Android:IcyStreamMeta - 流标题更改后应用程序崩溃

java - Tomcat - 无法打开日志 - 无法部署

C - 段错误

c - pthread_join() 导致段错误

java - Orika - 不在 eclipse 中工作

java - 遇到 java.net.BindException : Address already in use (Bind failed) on server- client socket app

c++ - C 或 C++ 中的跨平台 GUI 工具包?

ios - 如何使用 swift 显示带有进度条的 AVAudioPlayer?