Loading...
enevlogiev avatar enevlogiev 1168 Точки

[Challenge] Числото Х на степен N

Естествено, ще е хубаво да не използвате Math.Pow() : ))
За да е по-интересна задачата, нека има две подусловия.

1) Имате право да ползвате цикли, но нямате право да ползвате умножение.

2) (за малко по-напреднали) Имате право да използвате умножение, но нямате право на цикли.

Има отговори в гугъл, ще се радвам, ако първо помислите сами. Авторски решения засега няма : )

 

Edit: (tnx Фил Колев) Достатъчно е програмата да работи с цели положителни числа. Може да ползвате BigInteger, ако искате. Ако някой измисли вариант за реални числа или отрицателни степени, нека го предложи : )

Тагове:
8
Programming Basics 09/04/2015 02:07:51
RoYaL avatar RoYaL Trainer 6848 Точки

Тук ще трябва да се намеси BigInt.

Иначе не се сетих за начин да компютна степепна само с умножение, деление и т.н. Сигурно има някакъв побитов начин, ама не ми е минал през акъла все още.

Щом може с рекурсия обаче няма ядове :D

Ето ги моите решения:

static void Main()
    {
        int num = 88;
        int pow = 10;


        // with loops
        decimal res = num;
        decimal inc = num;

        for (int i = 1; i < pow; i++)
        {
            for (int j = 1; j < num; j++)
            {
                res += inc;
            }
            inc = res;
        }

        Console.WriteLine(inc);

        // ---------------------------------------

        // without loops (recursion)
        Console.WriteLine(Pow(num, pow));
    }

    static decimal Pow(int num, int pow, decimal result = 1)
    {
        if (pow == 0) return result;
        result *= num;
        pow--;
        return Pow(num, pow, result);
    }
0
quickben avatar quickben 966 Точки

12-те реда правилото ванка :)

0
10/04/2015 02:06:00
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.