使用大输入时输出错误

时间:2016-03-25 17:49:22

标签: c++ c

好的,这是我试图做的一个简单问题的代码from Codechef。问题很简单,但由于某种原因,我在使用大输入时得到了错误的答案,但对于小输入则是正确答案。

示例

当我将houses分配给10k2时,我获得了正确的金额,但是当保持房屋相同并使用{{1}时我会收到一个错误的答案。

我的代码

k=10

1 个答案:

答案 0 :(得分:0)

使用大输入时输出错误的主要原因是tmpsum= pow(abs(d),k);行,因为溢出。

对于较大的值,pow(a,b)的结果大于int数据类型可以承受的结果。

尝试将您的数据类型更改为long long int

因为即使long long int也不适合你。你需要实现自己的战俘功能。

long long int mypow(int a,int b) {
    if(b == 0)
        return 1;
    if(b == 1)
        return a;
    if(b%2)
        return (((a*mypow(a*a,b/2)))%(1000000007));
    return((mypow(a*a,b/2))%(1000000007));
}