Sultan
16 уровень

Codes Inc; Room #007

Статья из группы Архив info.javarush
участников

Садовник-художник

Codes Inc; Room #007 - 1 Садовник посадил N (1 <= N <= 50) деревьев в один ряд. После посадки деревьев садовнику нужно их покрасить. В его распоряжении есть краска трех цветов: белая, синяя и оранжевая. Сколько способов покраски деревьев есть у него, если никакие два соседних дерева нельзя красить в одинаковый цвет? Напишите функцию public static long count(int n), которая возвращает количество способов покраски n деревьев.
Комментарии (13)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
terranum
Уровень 28
28 августа 2014, 19:59
Так просто сказка)
Sultan
Уровень 16
28 августа 2014, 17:42
Кстати, так шикарней:
public static long count(int n) {
    return 3L << (n - 1);
}
Sant9Iga
Уровень 41
28 августа 2014, 18:18
а что за сайт?
Sultan
Уровень 16
28 августа 2014, 18:21
я то могу сказать, но разве интерес не пропадет?
terranum
Уровень 28
28 августа 2014, 17:18
public static long count(int n){
        return n != 1 ? 3 * (long)Math.pow(2, n-1) : 3;
    }

public static long count2(int n){
        if(n == 1)
            return 3;
        return 2*count2(n-1);
    }
Sultan
Уровень 16
28 августа 2014, 17:41
первый вариант сейчас проверю на сайте, вдруг из-за неточности Math.pow() неправильно решает, а вот рекурсию без надобности лучше оставить.)
Sultan
Уровень 16
28 августа 2014, 17:44
да, первый вариант принимает
terranum
Уровень 28
28 августа 2014, 15:39
public static int count(int n){
        return 3 + (n-1)*2;
    }
Sultan
Уровень 16
28 августа 2014, 16:34
подставь n = 2
terranum
Уровень 28
28 августа 2014, 16:58
Ага…
Sultan
Уровень 16
28 августа 2014, 17:08
Кстати, кажется ответ не лезет в int при n = 50, так что я изменил сигнатуру метода в задании
terranum
Уровень 28
28 августа 2014, 17:14
давай до 25?)
Sultan
Уровень 16
28 августа 2014, 17:18
по заданию до 50, в long это лезет, если не ошибаюсь.