好的,这是我试图做的一个简单问题的代码from Codechef。问题很简单,但由于某种原因,我在使用大输入时得到了错误的答案,但对于小输入则是正确答案。
示例
当我将houses
分配给10
和k
至2
时,我获得了正确的金额,但是当保持房屋相同并使用{{1}时我会收到一个错误的答案。
我的代码
k=10
答案 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));
}