Сума від 1 до n
Математики под фразой «целые числа от 1 до N» подразумевают интервал, у которого правый конец больше левого. Сложность задачи 73%, потому что ни один здравомыслящий человек не догадается, что правый конец интервала от 1 до n может быть отрицательным числом?
Аргументы неубедительны. Задача 1464 сформулирована по тому же принципу, что и 1621 (то есть, те же грабли). Несмотря на то, что задача есть на сайте informatics, я по-прежнему считаю ее неудачным примером, который якобы демонстрирует важность внимательного анализа условия задачи. Цитата к задаче 1464 вообще может относиться к любой задаче. "Пример вывода выходных данных приводится по двум причинам: 1. Чтобы Вы могли видеть правильный формат вывода результата. 2. Чтобы Вы иногда могли считать, что Ваше неправильное решение выдаёт правильный ответ.
В качестве ещё одного "неубедительного аргумента", вспомните, как Поль Дирак решал задачу о 3-х рыбаках и пойманной ими рыбе - в результате появился целый раздел современной физики.
Решение задачи о трех рыбаках Поля Дирака – это очень остроумная шутка великого физика, не связанная с его работами по квантовой физике. Рыбаки тогда получают равное количество рыб. Рыбаков может быть не трое, а бесконечно много :) Если в задаче 1621 предполагалась шутка, то она неудачная.
Да что за тупость ? Если нужно посчитать когда n <= 0, так и пишите что ... "произвести сумму от n до 1 включительно в случае n <= 0".
>>jhendrix_92 сумма от 1 до n и от n до 1 разве не одно и тоже???)
long double и никаких проблем :)
include <iostream>
using namespace std;
int main() { long longn, m, ans; cin >> n; m = abs(n); if (m % 2 == 0) ans = m / 2 * (m + 1); else ans = (m + 1) / 2 * m; if (n > 0) cout << ans << endl; else cout << 1 - ans << endl; }
include <iostream>
using namespace std;
int main() { long longn, m, ans; cin >> n; m = abs(n); if (m % 2 == 0) ans = m / 2 * (m + 1); else ans = (m + 1) / 2 * m; if (n > 0) cout << ans << endl; else cout << 1 - ans << endl; }