long long int 数的模数

Modulo of long long int number

你好,我在 c 中尝试了一个代码,并考虑到以下代码行中的所有变量都是 "long long int"、

money=(money % 1000000007)+(((2*pow(abs(a[i]-a[j]),k))%1000000007) % 1000000007);

我收到一条错误消息,指出

error: invalid operands to binary % (have 'double' and 'int') money=(money % 1000000007)+(((2*pow(abs(a[i]-a[j]),k))%1000000007))) % 1000000007); ^

我不明白这个错误是什么意思,因为我没有使用 double.Could 我得到了一个简短的解释?

% 是整数运算符,pow() returns 是双精度运算符。因此,您可能需要使用 fmod 或 fmodf 或将所有内容都转换为 int。

money=(money % 1000000007)+(((2*(long long int)pow(abs(a[i]-a[j]),k))%1000000007))) % 1000000007);

你的问题是战俘。如果你看 http://www.cplusplus.com/reference/cmath/pow/ 你会发现无论你给它什么类型,它都会 return 浮点型或双精度型。

尝试将 pow 的结果转换为 int