profile
Опубликовано 5 лет назад по предмету Информатика от MrAtarusama

Найти количество вариантов, для заполнения поля 12х2 фигурами 1х2 или 2х1 (использовать можно всего 12 раз ( фигуры 1х2 или 2х1 ))
Зы.Сы. Поле 3х2 можно заполнить тремя способами.

Желательно вместе с кодом, но можно и просто число.

  1. Ответ
    Ответ дан Аккаунт удален
    Тебя интересует левое верхнее число из матрицы begin{pmatrix}
1 & 1 \ 1 & 1
end{pmatrix}^{12}, что, кстати, является 12 числом фибоначчи

    #include <iostream>
    // матрица 2 на 2// a  b// c  dtemplate< typename T = int >class matrix2{public:    T a, b, c, d;
        matrix2() : a(0), b(0), c(0), d(0)    {}    matrix2(T a, T b, T c, T d) : a(a), b(b), c(c), d(d)    {}
        matrix2 & operator *= (matrix2 & other)    {        T ta, tb, tc, td;        ta = a * other.a + b * other.c;        tb = a * other.b + b * other.d;        tc = a * other.c + c * other.d;        td = b * other.c + d * other.d;        a = ta, b = tb, c = tc, d = td;    }
        matrix2 operator * (matrix2 & other)    {        T ta, tb, tc, td;        ta = a * other.a + b * other.c;        tb = a * other.b + b * other.d;        tc = a * other.c + c * other.d;        td = b * other.c + d * other.d;        return matrix2(ta, tb, tc, td);    }
        matrix2 pow(int power)    {        matrix2 result(1, 0, 0, 1);        matrix2 cur = *this;        while (power)        {            if (power & 1)            {                power ^= 1;                result *= cur;            }            else            {                power >>= 1;                cur *= cur;            }        }        return result;    }
        void operator = (matrix2 other)    {        a = other.a;        b = other.b;        c = other.c;        d = other.d;    }
        friend std::ostream & operator << (std::ostream & ostr, matrix2 ma)    {        ostr << std::endl;        ostr << ma.a << "  " << ma.b << std::endl;        ostr << ma.c << "  " << ma.d << std::endl;        return ostr;    }
    };
    int main(void){    matrix2< int > m1(1, 1, 1, 0), tmp;
        const int N = 12;
        std::cout << m1.pow(N).a;
        return 0;}
    1. Ответ
      Ответ дан MrAtarusama
      Можно файл + название языка?)
    2. Ответ
      Ответ дан Аккаунт удален
      c++, http://pastebin.com/kWtJiWWa файл к комментам не прикреплялся
Самые новые вопросы