Здесь C++ код для Codeforces problem Я пытаюсь решить:Codeforces 268b - Неизвестное значение в качестве выхода для этих небольших C++ программы
#include <iostream>
using namespace std;
int main()
{
int n = -1;
unsigned long long possible_combinations = 0;
cin >> n;
possible_combinations = (((n - 1) * n * (n + 1))/6) + n;
cout << possible_combinations;
return 0;
}
где 1 <= n <= 2000
.
Он вычисляет правильное значение для малых значений n, но когда я использую 2000
, он показывает - 18446744073611230851
. Я пробовал только несколько тестовых случаев.
Я знаю, что формула правильная, и программа должна давать 1333335000
как выход, но это не так. В чем проблема с кодом?
Подсказка: что является результатом '(n - 1) * n * (n + 1)' для 'n = 2000', учитывая, что' n' имеет тип 'int'? –
@Andreas Итак, вы говорите, что значение этого выражения вычисляется как 'int'? – PalashV
@PalashV: Да, тип выражения зависит только от типов выражения (например, 'n' и констант' 1' и '6', которые также являются' int', а не типа переменной вы назначаете его (например, 'possible_combinations') – peterchen