Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2018, 16:26   #1
rekimchuk
Пользователь
 
Регистрация: 12.03.2018
Сообщений: 11
По умолчанию Помогите пожалуйста оптимизировать маленькую часть кода

Код:
    
    m=7;
    for(int i=2; i<=n; i++)
    {
        m=(7*m) % 1000000000;
    }
    fout<<m;
мне нужны последние 9 цифр от возведение 7 в степень n. Но исп mod рядом с pow, с++ запрещает, по этому приходится такой код исп. слишком много времени тратится на эту задачу. Пробовал с шагом i+2 , и делать m*49 , но ответы уже не верны. пробовал и шаг i*i, и делать m*m всё равно ответ не верный.
rekimchuk вне форума Ответить с цитированием
Старый 17.03.2018, 17:04   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Что-то совсем не понятно как между собой вяжутся остаток от деления и последние цифры??
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 17.03.2018, 17:24   #3
rekimchuk
Пользователь
 
Регистрация: 12.03.2018
Сообщений: 11
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Что-то совсем не понятно как между собой вяжутся остаток от деления и последние цифры??
хм, чтоо? 25%10=5 ,25 поделить на 10 будет 2 и 5 остаток. у 25 , последняя цифра 5. именно с помощью mod или % находят последние цифры из больших чисел(ну или не больших)
rekimchuk вне форума Ответить с цитированием
Старый 17.03.2018, 18:49   #4
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Быстрое возведение в степень по заданному модулю
Код:
unsigned long long powm(unsigned long long a, int n, unsigned long long m)
{
  unsigned long long res = 1;
  while (n > 0)
  {
    if (n & 1)
    {
      res = (res * a) % m;
    }
    a = (a * a) % m;
    n /= 2;
  }
  return res;
}
Black Fregat вне форума Ответить с цитированием
Старый 17.03.2018, 19:15   #5
rekimchuk
Пользователь
 
Регистрация: 12.03.2018
Сообщений: 11
По умолчанию

Спасибо большое

Последний раз редактировалось rekimchuk; 17.03.2018 в 19:26.
rekimchuk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти часть кода, пожалуйста doril_olast Общие вопросы C/C++ 0 27.01.2018 10:36
С++ Помогите пожалуйста понять маленькую деталь в моей программе Maxe Помощь студентам 4 04.02.2017 22:21
Оптимизировать, перевести часть кода на ASM (Delphi) Puhovoi Фриланс 2 07.02.2015 21:24
Помогите пожалуйста решить маленькую задачку Mihael-Vlz Паскаль, Turbo Pascal, PascalABC.NET 1 19.01.2009 19:54
Помогите, пожалуйста, реализовать часть кода Horknee Паскаль, Turbo Pascal, PascalABC.NET 2 01.12.2008 23:30