• Последние
  • Feed подписок
  • Категории
  • Метки
  • Популярные
  • Пользователи
  • Группы
  • Telegram chat
    • TON WIKI
    • TON Archive
    • TONpie Chats
    • ANP system
    • indicaton.io
Theme Center
  • Theme Center
  • default

  • reset theme
Collapse

tonpie.io

Подпишись на канал фаундера и разработчика экосистемы tonpie

[Решено] Как возвести число в степень в FunC?

Запланировано Прикреплена Закрыта Перенесена TON Overflow на русском
a-func
2 Сообщения 1 Posters 26 Просмотры
    • Сначала старые
    • Сначала новые
    • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • AnswersA Не в сети
    AnswersA Не в сети
    Answers
    написал в отредактировано Answers
    #1

    Есть ли встроенный способ возведения чисел в степень в FunC? Если его нет и разработчик должен написать функцию, то, вероятно, сообщество уже написало наиболее оптимизированную из них?


    Этот вопрос был импортирован из чата Telegram: <***Скрыто***

    click to show


    Оригинал вопроса

    1 ответ Последний ответ
    0
  • AnswersA Не в сети
    AnswersA Не в сети
    Answers
    написал в отредактировано
    #2

    Решено

    В func нет такой встроенной функции, поэтому вы должны реализовать ее самостоятельно. Я бы посоветовал использовать двоичное возведение в степень, потому что это решение может сэкономить вам газ

    ;; Unoptimized variant
    int pow (int a, int n) {
        int i = 0;
        int value = a;
        while (i < n - 1) {
            a *= value;
            i += 1;
        }
        return a;
    }
    
    ;; Optimized variant
    (int) binpow (int n, int e) {
        if (e == 0) {
            return 1;
        }
        if (e == 1) {
            return n;
        }
        int p = binpow(n, e / 2);
        p *= p;
        if ((e % 2) == 1) {
            p *= n;
        }
        return p;
    }
    
    () main () {
        int num = binpow(2, 3);
        ~dump(num); ;; 8
    }
    
    1 ответ Последний ответ
    0

  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.
  • Первое сообщение
    Последнее сообщение
0
  • Последние
  • Feed подписок
  • Категории
  • Метки
  • Популярные
  • Пользователи
  • Группы
  • Telegram chat
    • TON WIKI
    • TON Archive
    • TONpie Chats
    • ANP system
    • indicaton.io
  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.