Проблема с подсчетом двойной суммы
#include <iostream>
using namespace std;
int main() {
int n;
double sm = 0;
cin >> n;
for (int i = 0; i <= n; ++i) {
for (int j = 0; j <= n; ++j) {
sm += i*i - 2 * j;
}
}
cout << sm;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Только заметил...
Ну кто же так делает?!!
double sm = 0;
Это же типично целочисленное значение! Введите 1000, и посмотрите, что вам выведет программа: 3.33165e+11
Замените на long long, вот этот код благополучно работает:
int main()
{
long long n;
long long sm = 0;
cin >> n;
for (long long i = 0; i <= n; ++i) {
for (long long j = 0; j <= n; ++j) {
sm += i*i - 2 * j;
}
}
cout << sm;
}
Но самое правильное :) решение (работающее до 55000 с небольшим) — вот:
int main()
{
long long n;
cin >> n;
cout << (1+n)*(1+n)*(2*n-5)*n/6;
}
