avatar
Amex的deals太多了# Money - 海外理财
y*0
1
就是自己定义一个结构来表示big integer,然后实现它的加减乘除,还有按十进制和
二进制的打印。当时我用一个byte array来表示整数,然后乘除写得乱七八糟的。直到
现在印象都很深。现在想想,觉得好像用一个string表示整数似乎更直观好做点。大家
说说有没有什么好的做法?
avatar
f*d
2
来不及用了。
avatar
s*o
3
M家被问到过加法,快结束了才写出来
加减乘除还要2/10进制直接跪了.。。

【在 y**********0 的大作中提到】
: 就是自己定义一个结构来表示big integer,然后实现它的加减乘除,还有按十进制和
: 二进制的打印。当时我用一个byte array来表示整数,然后乘除写得乱七八糟的。直到
: 现在印象都很深。现在想想,觉得好像用一个string表示整数似乎更直观好做点。大家
: 说说有没有什么好的做法?

avatar
n*w
4
如果用数字array的话,直接integer array就行吧。
考虑到要二进制打印,使用65536进制,每个数组元素表示一个"digit"。(假设
interger是16位)

【在 y**********0 的大作中提到】
: 就是自己定义一个结构来表示big integer,然后实现它的加减乘除,还有按十进制和
: 二进制的打印。当时我用一个byte array来表示整数,然后乘除写得乱七八糟的。直到
: 现在印象都很深。现在想想,觉得好像用一个string表示整数似乎更直观好做点。大家
: 说说有没有什么好的做法?

avatar
w*x
5
乘就算了, 除我我怀疑是不是玩我呢
avatar
H*r
6
一共给多长时间啊?这题做好那花时间不是一般长...
详细可参看GMP

【在 y**********0 的大作中提到】
: 就是自己定义一个结构来表示big integer,然后实现它的加减乘除,还有按十进制和
: 二进制的打印。当时我用一个byte array来表示整数,然后乘除写得乱七八糟的。直到
: 现在印象都很深。现在想想,觉得好像用一个string表示整数似乎更直观好做点。大家
: 说说有没有什么好的做法?

avatar
y*0
7
45分钟还是一个小时,反正我没写完。写了的部分估计bug也有一堆。最后被拒也是没
跑的。

【在 H****r 的大作中提到】
: 一共给多长时间啊?这题做好那花时间不是一般长...
: 详细可参看GMP

avatar
l*a
8
很奇怪你为什么隔了这么多年才想起来问问怎么做

【在 y**********0 的大作中提到】
: 就是自己定义一个结构来表示big integer,然后实现它的加减乘除,还有按十进制和
: 二进制的打印。当时我用一个byte array来表示整数,然后乘除写得乱七八糟的。直到
: 现在印象都很深。现在想想,觉得好像用一个string表示整数似乎更直观好做点。大家
: 说说有没有什么好的做法?

avatar
H*r
9
45分钟太短了,加减不说,看看乘除的算法:
http://gmplib.org/manual/Algorithms.html#Algorithms

【在 y**********0 的大作中提到】
: 45分钟还是一个小时,反正我没写完。写了的部分估计bug也有一堆。最后被拒也是没
: 跑的。

avatar
y*0
10
因为又要去G家onsite找虐了。

【在 l*****a 的大作中提到】
: 很奇怪你为什么隔了这么多年才想起来问问怎么做
avatar
s*k
11
用vector是不是好点?每个int存0-1024

【在 y**********0 的大作中提到】
: 就是自己定义一个结构来表示big integer,然后实现它的加减乘除,还有按十进制和
: 二进制的打印。当时我用一个byte array来表示整数,然后乘除写得乱七八糟的。直到
: 现在印象都很深。现在想想,觉得好像用一个string表示整数似乎更直观好做点。大家
: 说说有没有什么好的做法?

avatar
y*0
12
多谢大牛指点。看了一眼好像太难了。。。面试真要考这个我就洗洗睡了算了

【在 H****r 的大作中提到】
: 45分钟太短了,加减不说,看看乘除的算法:
: http://gmplib.org/manual/Algorithms.html#Algorithms

avatar
y*0
13
为什么存1024?

【在 s******k 的大作中提到】
: 用vector是不是好点?每个int存0-1024
avatar
f*2
14
We can use String to represent big integers.
(1) Write + operation.
Pay attention to two strings of different length and carry on digit.
(2) Write - operation.
First compare two strings to decide what the sign of the final result.
The longer length one is bigger. Of the same length strings, start from left
to right.
Pay attention to borrowers.
(3) Once we get +, write *.
For example
123 * 12 = 123 * 2 + 123 * 10.
where 123 * 2 means to add 123 twice and 123 * 10 to add 123 ten times.
(4) Write / operation.
Continue to minus divisor from dividend until we get 0.
For example, 23 / 5 = 4
subtraction result number of subtractions
23 - 5 = 18 > 5 1
18 - 5 = 13 > 5 2
13 - 5 = 8 > 5 3
8 - 5 = 3 4
Since 3 < 5, stop.
So 23 / 5 = 4.
You need to pay attention to trivial details when writing this code. It
definitely takes more than 45 minutes to get it done for myself.

【在 y**********0 的大作中提到】
: 就是自己定义一个结构来表示big integer,然后实现它的加减乘除,还有按十进制和
: 二进制的打印。当时我用一个byte array来表示整数,然后乘除写得乱七八糟的。直到
: 现在印象都很深。现在想想,觉得好像用一个string表示整数似乎更直观好做点。大家
: 说说有没有什么好的做法?

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。