Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
Вернуться
Тема: люди??помоги пожалуйста??напишите пожалуйста как правильно цикл написать во второй задаче?у меня проблема с отрицательными числами,ошибка на первом тесте?((
1
  1  Верещака Артём Александрович, 07 апреля 2009 г. 22:22:16
      Ну и как можно короче на паскале Демиденко Виталий???
  2  Мехрдод ТРГИ [9"А" team], 03 апреля 2009 г. 21:26:17
      можно прогрессией как я
#include<iostream>
using namespace std;
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int n,p;
cin>>n;
if (n<=0) p=2-n; else p=n;
cout<<(1+n)*p/2;


}
  3  Демиденко Виталий, 03 апреля 2009 г. 21:12:51
      Артём Александрович а можно ещё короче))
  4  Верещака Артём Александрович, 03 апреля 2009 г. 15:55:55
      вот
readln(n);
if n>0 then writeln(((1+n)*n)div 2);
if n<=0 then writeln(-((1+(-n))*(-n) div 2-1));
можна и без цикла!!!
  5  Прыщенко Богдан Олегович, 03 апреля 2009 г. 14:22:35
      не понимаю сути вопроса... При написаном правильно цикле программа работает для всех чисел. Если писать простым циклом, то сделайте проверку на знак числа, при числе меньше 1 один цикл, при числе больше 1 - другой. Или можно воспользоватся тем, что сумма чисел от 1 до -n равна сумме сумме чисел от 1 до n, взятой с противоположным знаком и уменьшеной на 1 по модулю (от 1 до 5 - 15, от 1 до -5 - (-14)).
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru