在解决关于hackerearth的问题时我得到了这个错误,我试图找到解决方案,但是当两个不同的数据类型用作操作数但在我的情况下两个sama数据类型的操作数,这里是我的完整代码< / p>
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int arr[1000];
int n;
cin>>n;
double ans=1;
for(int i =0; i<n ;i++)
{
cin >> arr[i];
ans=(ans*arr[i])%(pow(10,9)+7);
}
cout << ans;
return 0;
}
答案 0 :(得分:0)
模块运算符(即operator%
)不是为浮点定义的,而是仅为整数定义的。
当您将ans
声明为double时,表达式ans*arr[i]
的计算结果为double。将它更改为int ans
将有错误的语句编译(实际返回整数模数)。
答案 1 :(得分:0)
12.3 % 4.2
的预期输出是多少?
如果您有答案,那么您还必须推出自己的实现,内置operator%
仅适用于整数类型。
如果你对此感觉不错,但是你的参数碰巧是浮点值,那么round / floow / ceil / cast它们。 e.g:
static_cast<uint64_t>(double_value);