划分两个非常大的数字

时间:2015-09-11 19:27:37

标签: c++ c algorithm

我想计算(a+b)/pow(2,s)

-10^10 ≤ s ≤ 10^10
1 ≤ a, b ≤ 10^9

但即使我将结果存储在long long中,它也会给出0.如果答案位于long的范围内,我如何计算结果?

2 个答案:

答案 0 :(得分:1)

你不需要分裂......除以2的幂只是一个右移。

答案 1 :(得分:0)

您可以使用std::bitset<log2(10^9)>手动计算总和,然后在结果上调用operator>>=( s )并获取std:bitset::to_ulong()