在C ++中乘以向量元素

时间:2017-12-19 19:56:58

标签: c++

尽管此代码的目的是

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时,输出为41006540​​8而不是9,000,000,000。那是为什么?

2 个答案:

答案 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