Сумма n натуральных чисел задается формулой n * (n + 1) / 2
.Таким образом, вам не нужно перебирать n , чтобы вычислить сумму.
As, n может быть до 10 18 , вычисление суммы с использованием (n * (n + 1) / 2) % MOD
приведет к переполнению целого числа.Вместо этого для вычисления суммы следует использовать модульное арифметическое свойство (a * b) % MOD
, совпадающее с ((a % MOD) * (b % MOD)) % MOD
.,
Таким образом, сумма может быть вычислена с использованием: ((n % MOD * (n + 1) % MOD) % MOD) / 2
Код будет выглядеть примерно так:
const long long int MOD = 1e9 + 7;
long long int n;
cin >> n;
long long s
s = ((n % MOD * (n + 1) % MOD) % MOD) / 2;
cout << s << '\n';