Ответы пользователя по тегу C++
  • Нужно найти 10 елемент,я так понимаю это прогрессия,совсем не могу разобраться?

    @Elsper
    Записал задачу ты конечно ужасно. По такой записи ничего не понятно.

    Решение вроде такое.
    int[] allT = new int[11];
    allT[0] = 1;
    for (int i = 1; i < 11; i++)
    {
        for (int i2 = 0; i2 < i; i2++)
        {
            allT[i] += allT[i2] * allT[i - i2-1];
        }
    }


    allT[10] равно 16796
    Ответ написан
  • Как решить задачу на c++?

    @Elsper
    Если код не важен, а нужно именно решение, то вот на привычном для меня C#
    Идея в том, что мы просто симулируем поворот замка и смотрим что происходит.

    int A = 2;
    int B = 3;
    int N = 3;
    int K = 1;
    
    int maxPos = N;
    int currentPos = 1;
    
    int countReachK = 0;
    int countPairs = 0;
    
    while (countReachK < K)
    {
        //Если надо приводим к нулю чтобы не считать пересечение два раза.
        if ((currentPos == maxPos) && (A>0)) 
        currentPos = 0;
    
        currentPos += A;
    
        //Проверка на пересечение или остановку.
        while (currentPos >= maxPos)
        {
            currentPos -= maxPos;
            countReachK++;
        }
    
        //Если надо приводим к максимуму чтобы не считать пересечение два раза.
        if ((currentPos == 0) && (B>0)) 
        currentPos = maxPos;
    
        currentPos -= B;
    
        //Проверка на пересечение или остановку.
        while (currentPos <=0)
        {
            currentPos += maxPos;
            countReachK++;
        }
    
        countPairs++;
    }
    if (countReachK != K)
        countPairs = -1;
    
    // countPairs и есть искомый результат.
    Ответ написан
    Комментировать