ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1149. Танцы синуса

Nice recursive functions
Послано † Ленин † [Yaroslavl SU] 20 мар 2010 18:21
I thought i'll never get AC at this problem, but after some time i wrote that very nice (as for me ^___^) functions doing the work.

void a( int n, int k )
{
-printf("sin(%d",k);
-if ( k < n )
-{
--if ( k % 2 )
---printf("-");
--else
---printf("+");
--a( n, k + 1 );
-}
-printf(")");
}

void s( int n, int k )
{
-if ( k < n )
-{
--printf("(");
--s( n, k + 1 );
--printf(")");
-}
-a( n - k + 1, 1 );
-printf("+%d",k);
}

For answer just need to call s( n, 1 ).
Good luck!

Edited by author 20.03.2010 18:23
Re: Nice recursive functions
Послано pusho4eg 25 апр 2011 00:48
void s(int n, int k)
{ printf("sin(%d",k);
  if (n!=k)
  { putchar(((k&1)<<1)+43);
    s(n,++k);
  }
  putchar(')');
}

void p(int n, int k)
{ if (k>1)
  {  putchar('(');
     p(n,k-1);
  }
  s(k,1);
  printf("+%d",n+1-k);
  if (k<n) putchar(')');
}

my algorithm... for answer p(n,n)
Re: Nice recursive functions
Послано Shah Habibul Imran 11 окт 2018 12:30
Thanks, I was stuck in the recursion for Sn. :)