尽管此代码的目的是
int MaxPairwiseProduct(const vector<int>& numbers) {
int result = 0;
int n = numbers.size();
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
if (numbers[i] * numbers[j] > result && numbers[i] * numbers[j] % 2 == 0) {
result = numbers[i] * numbers[j];
}
}
}
return result;
}
当我输入2且元素为90000和100000时,输出为410065408而不是9,000,000,000。那是为什么?
答案 0 :(得分:0)
我使用 long long int
来获得更大的变量
答案 1 :(得分:-2)
因为当你乘以整数时,它是int
类型边界的传出。在这种情况下,请使用long long
类型
long long MaxPairwiseProduct(const vector< long long >& numbers) {
long long result = 0;
int n = numbers.size();
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
if (numbers[i] * numbers[j] > result && numbers[i] * numbers[j] % 2 == 0) {
result = numbers[i] * numbers[j];
}
}
}
return result;
请注意,如果您的数字太大(大于2 ^ 63-1),则无法使用标准c ++类型。有所有类型边界C++ data types