Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 03.11.2016
Сообщений: 11

отжимания

05.01.2017, 22:14. Показов 1134. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны числа A, B, N, M ,K.
Даниил выкурил A сигарет, за это его ждёт наказание в A^N отжиманий.
За подозрение в употреблении алкогольных напитков его ждёт наказание в B^M отжиманий.
Т.к кол-во отжиманий будет, скорее всего, большим числом, посчитать кол-во отжиманий по модулю K.
(A <= 1000, B <= 1000, K <= 1000, N <= 10^9, M <= 10^9)
Примеры:

Входной файл:
1 1 3 100 5
Выходной файл:
2

Входной файл:
1 2 100 3 5
Выходной файл:
4
0
Лучшие ответы (1)
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
 Аватар для magirus
28049 / 15785 / 983
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
06.01.2017, 10:10
Цитата Сообщение от Печальная_Особь Посмотреть сообщение
A^N отжиманий
Цитата Сообщение от Печальная_Особь Посмотреть сообщение
A <= 1000
Цитата Сообщение от Печальная_Особь Посмотреть сообщение
N <= 10^9
ябысдох скорее можно конечно предположить что а=1 и N=1
Цитата Сообщение от Печальная_Особь Посмотреть сообщение
За подозрение в употреблении
боюсь предположить что будет при доказанном употреблении
сами что то наваять пробовали?
0
Модератор
10448 / 5739 / 3407
Регистрация: 17.08.2012
Сообщений: 17,460
07.01.2017, 14:37
Лучший ответ Сообщение было отмечено Печальная_Особь как решение

Решение

Для сдачи роботу.

Не самый оптимальный вариант, но зато простой:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
function pow_n(x, y, m: integer): integer;
var i, p: integer;
begin
  p := 1;
  for i := 1 to y do p := p * x mod m;
  pow_n := p
end;
 
var a, b, n, m, k: integer;
begin
  readln(a, b, n, m, k);
  writeln((pow_n(a, n, k) + pow_n(b, m, k)) mod k)
end.
Или так:
Pascal
1
2
3
4
5
6
7
8
9
var a, b, n, m, k, an, bm: integer;
begin
  readln(a, b, n, m, k);
  an := 1;
  bm := 1;
  for n := 1 to n do an := an * a mod k;
  for m := 1 to m do bm := bm * b mod k;
  writeln((an + bm) mod k)
end.
Можно ещё применить алгоритм быстрого возведения в степень.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function pow_n(x, y, m: integer): integer;
var i, p, xy: integer;
begin
  p := 1;
  xy := x
  while y > 0 do
    begin
      if y mod 2 = 1 then p := p * xy mod m;
      xy := xy * xy mod m;
      y := y div 2
    end;
    pow_n := p
end;
 
var a, b, n, m, k: integer;
begin
  readln(a, b, n, m, k);
  writeln((pow_n(a, n, k) + pow_n(b, m, k)) mod k)
end.
То же самое, без подпрограммы.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var a, b, n, m, k, an, bm, t: integer;
begin
  readln(a, b, n, m, k);
  an := 1;
  t := a;
  while n > 0 do
    begin
      if n mod 2 = 1 then an := an * t mod k;
      t := t * t mod k;
      n := n div 2
    end;
  bm := 1;
  t := b;
  while m > 0 do
    begin
      if m mod 2 = 1 then bm := bm * m mod k;
      t := t * t mod k;
      m := m div 2
    end;
  writeln((an + bm) mod k)
end.
Добавлено через 50 минут
Да, ещё. Если проверяющая система позволяет, тогда лучше применить более быстрые операции. Заменить выражения вида
Pascal
1
z := z div 2
на
Pascal
1
z := z shr 1
а выражения вида
Pascal
1
if z mod 2 = 1
на
Pascal
1
if z and 1 = 1
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru