Здесь
Вот мой код:
#include <iostream>
using namespace std;
int main()
{
int n, sum =0;
cin >> n;
if (n<=-1)
for(int i=1; i>=n; i--) sum+= i; // сума отрицательных
else
sum = (1+n) * n / 2; // по формуле
cout << sum;
}
Но сдано только на 57%. В чем может быть подвох?
Ваши главные ошибки - во-первых, вы не учитываете, что сумма может быть на все 64 бита... Соответственно, суммировать циклом - это кошмарное решение.
Нельзя даже множить n*(n+1)/2
- потому что можно получить переполнение!
Нужно, например, вот так:
#include <iostream>
#include <iomanip>
using namespace std;
int main(int argc, const char * argv[])
{
long long n;
cin >> n;
if (n > 0)
{
if (n%2)
n = ((n+1) >> 1)*n;
else
n = (n >> 1)*(n+1);
}
else if (n==0) n = 1;
else
{
n = -n;
if (n%2)
n = ((n+1) >> 1)*n;
else
n = (n >> 1)*(n+1);
n = 1 - n;
}
cout << n << endl;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть большой sql-запрос (почти на 1500 строк), доставшийся по наследству, но не функционирующий правильноНужно отдебажить
Поставил на Ubuntu сервер MySQL, создал БД, при создании указал кодировку utf-8:
ЗдравствуйтеКаким образом можно сделать выборку из базы MySQL слов, которые начинаются на определенную букву?