Желанно c++ или c. А так не главно. Легенда гласит, что

Желательно c++ либо c. А так не важно. Легенда говорит, что Карл Фридрих Гаусс, учась в школе, сумел прытко посчитать сумму целых чисел от 1 до 100, заметив, что 1 + 100 = 2 + 99 = = 50 + 51. Теперь решите задачку потруднее: можно ли перед каждым из чисел от 1 до N расставить знаки + либо так, чтоб сумма получившихся чисел была равна 0? К примеру, для N = 3 сумма 1 2 +3 будет одинакова 0, а для N = 2 этого сделать нельзя. Программка получает на вход целое неотрицательное число N, не превосходящее 10в(5)ступени. Программка обязана вывести последовательность из N знаков + либо , соответствующих знакам, которые необходимо расставить перед числами от 1 до N так, чтобы сумма получившихся чисел была одинакова 0. Если задачка имеет несколько решений, нужно вывести один (лобой) ответ. Если задача не имеет решения для данного N, необходимо вывести одно слово IMPOSSIBLE. Ввод: 3 2 Вывод: --+ IMPOSSIBLE Примечание: Правильным ответом будет также ++-

Задать свой вопрос
1 ответ

Вот тебе в паскале


program ryad_chisel;

var N, t:integer;

begin

read(N);

t:=(N*(N+1))div 2;

if t mod 2 =1 then writeln('IMPOSSIBLE')

else begin

     if N mod 2 =0 then begin

                        t:=N div 4;

                        repeat

                        write('+');

                        t:=t-1;

                        until t=0;

                        t:=N div 2;

                        repeat

                        write('-');

                        t:=t-1;

                        until t=0;

                        t:=N div 4;

                        repeat

                        write('+');

                        t:=t-1;

                        until t=0;

                        end

     else begin

          t:=((N+1) div 4)-1;

          repeat

          write('+');

          t:=t-1;

          until t=0;

          t:=((N-1) div 2)+1;

          repeat

          write('-');

          t:=t-1;

          until t=0;

          t:=(N+1) div 4;

          repeat

          write('+');

          t:=t-1;

          until t=0;

          end

     end    

end.

Аринка Жищенко
не работает на цифру 3...(
Shumuhametov Daniil
РеАлЬнО
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт