Перейти к содержанию

Хитрая задачка


Рекомендуемые сообщения

Имею :) следующую не решенную задачу тесты не проходит

[align=justify](Время: 1 сек. Память: 16 Мб Сложность: 19%)

Требуется подсчитаять сумму целых чисел от 1 до N.

Входные данные в единственной строке входного файла INPUT.TXT записано единственное целое число N, не превышающее по абсолютной величине 10000.

Выходные данные

В единственную строку выходного файла OUTPUT.TXT нужно вывести одно целое число — сумму чисел от 1 до N.

INPUT.TXT OUTPUT.TXT

5 15[/align]

На вид все просто но мой код не проходит 3-ый тест из 8.

Подскажите где что я просмотрел


#include
short n,s=0;
int main(){
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
scanf("%d",&n);
if ((abs(n)<=10000)&&(n>0))
{
s=((n-(n-1)+abs(n))*(abs(n))/2);
printf("%d",s);
}
if (abs(n)==0)
{
s=n+1;
printf("%d",s);
}
if (n<0)
{
s=n-1+n;
printf("%d",s);
}
return 0;
}
#include < stdio.h >

сильно не пинайте я учусь

Ссылка на комментарий

По условию задачи N >= 1 ведь?

Тогда все проще намного:


#include < stdio.h >

int main(){
int n;

freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
scanf("%d",&n);

printf("%d", (1 + n)*n/2);
return 0;
}

А тест не проходит скорее всего из-за переполнения short.

Допустим n = 10000.

Тогда сумма равна 10001 * 10000 / 2 = 50005000

То есть int (4 байта) будет достаточно.

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...