Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 25.07.2022
Сообщений: 14

Обратное число

25.07.2022, 15:36. Показов 1161. Ответов 18

Студворк — интернет-сервис помощи студентам
Обратное число
В этой задаче нужно ответить на 1≤t≤105 запросов. Каждый запрос состоит из двух целых чисел 2≤p≤109 и 0<a<p, число p является простым. На каждый запрос нужно вывести в отдельной строке целое число 0<b<p такое, что (a⋅b−1) ⋮ p.

Входные данные

В первой строке дано целое число t — количество запросов.

В следующих t строках даны по два числа pi и ai, i=1,…,t.

Выходные данные

Выведите t целых чисел (каждое число в отдельной строке) — ответы на запросы.

Я написал код первые 4 теста прошёл, на 5 тупик.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
    int t;
    cin>>t;
    long long p,a;
    long long b;
    for(int i = 0; i<t;i++){
        cin>>p>>a;
        b = pow(a,p - 2);
        cout << b % p << endl;
    }
    return 0;
}
тут ограничение по времени, поэтому такой код не проходит.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <string>
 
using namespace std;
 
int f(int p, int a)
{
    for (int i = 1;i < p;i++){
        if ((i * a - 1) % p == 0){
            return i;
        }
    }
}
 
int main()
{
    int t;
    cin >> t;
    string s = "";
    for(int i = 0; i < t;i++){
        int p,a;
        cin >> p >> a;
        s += to_string(f(p,a));
    }
    for (int i = 0; i < s.size();i++){
        cout << s[i] << endl;
    }
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.07.2022, 15:36
Ответы с готовыми решениями:

Обратное число
В этой задаче нужно ответить на 1≤t≤105 запросов. Каждый запрос состоит из двух целых чисел 2≤p≤109 и 0&lt;a&lt;p, число p является...

Обратное число
В этой задаче нужно ответить на 1≤t≤105 запросов. Каждый запрос состоит из двух целых чисел 2≤p≤109 и 0&lt;a&lt;p, число p является...

Обратное число
Обратное число В этой задаче нужно ответить на 1≤t≤105 запросов. Каждый запрос состоит из двух целых чисел 2≤p≤109 и 0&lt;a&lt;p, число p...

18
25.07.2022, 16:12

Не по теме:

А что за площадка где тесты проходит?

0
0 / 0 / 0
Регистрация: 25.07.2022
Сообщений: 14
25.07.2022, 16:20  [ТС]
Supersumestria, сириус, тема называется: "Введение в алгоритмы реализация на C++"
0
Злостный нарушитель
 Аватар для Verevkin
10860 / 5805 / 1282
Регистрация: 12.03.2015
Сообщений: 26,811
25.07.2022, 16:47
Цитата Сообщение от p1rfect Посмотреть сообщение
Каждый запрос состоит из двух целых чисел 2≤p≤109 и 0<a<p, число p является простым.
109 - это 109 или 109?
0
Злостный нарушитель
 Аватар для Verevkin
10860 / 5805 / 1282
Регистрация: 12.03.2015
Сообщений: 26,811
25.07.2022, 17:11
Я б ещо покумекал, но рабочий день закончился и я пошёл домой.
Вот наброски, дальше сам давай.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <cstdio>
#include <cassert>
 
unsigned foo(unsigned p, unsigned a)
{
  assert(a && a < p);
 
  for (unsigned b = 1, n = 1; b < p; n++)
  {
    b = (p * n + 1) / a;
    if (!((p * n + 1) % a)) return b;
  };
 
  return 0;
}
 
int main(void)
{
  // 2 ≤ p ≤ 10^9, 0 < a < p
  struct { unsigned p, a; } x[] = {{17, 4}, {29, 11}, {2203, 113}, {3559, 250}, {0, 0}};
 
  // тестирование функции
  for (auto ptr = x; ptr->a; ptr++)
  {
    unsigned b = foo(ptr->p, ptr->a);
    printf("p = %u; a = %u; b = %u; ab - 1 = %u\n", ptr->p, ptr->a, b, ptr->a * b - 1);
  }
 
  getchar();
  return 0;
}
0
0 / 0 / 0
Регистрация: 25.07.2022
Сообщений: 14
25.07.2022, 18:07  [ТС]
Verevkin, 10^9
0
Злостный нарушитель
 Аватар для Verevkin
10860 / 5805 / 1282
Регистрация: 12.03.2015
Сообщений: 26,811
25.07.2022, 18:27
Цитата Сообщение от p1rfect Посмотреть сообщение
10^9
Как ты себе это представляешь?

0
0 / 0 / 0
Регистрация: 25.07.2022
Сообщений: 14
25.07.2022, 19:07  [ТС]
Verevkin, возведение числа a в степень (p-2)
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13202 / 6837 / 1822
Регистрация: 18.10.2014
Сообщений: 17,296
25.07.2022, 19:14
Цитата Сообщение от p1rfect Посмотреть сообщение
10^9
А в вопросе почему тогда написано 109?

И как насчет "105 запросов"?
0
Злостный нарушитель
 Аватар для Verevkin
10860 / 5805 / 1282
Регистрация: 12.03.2015
Сообщений: 26,811
25.07.2022, 19:29
Цитата Сообщение от p1rfect Посмотреть сообщение
возведение числа a в степень (p-2)
Вот именно. Попробуй возвести, например, число 3, хотя бы, в 107-ю степень. Чо получится?
0
0 / 0 / 0
Регистрация: 25.07.2022
Сообщений: 14
25.07.2022, 20:30  [ТС]
TheCalligrapher, тоже 10^5, я просто условие с сириуса скопировал и не заметил как тут оно скопировалось
0
Злостный нарушитель
 Аватар для Verevkin
10860 / 5805 / 1282
Регистрация: 12.03.2015
Сообщений: 26,811
25.07.2022, 20:33
Цитата Сообщение от p1rfect Посмотреть сообщение
я просто условие с сириуса скопировал и не заметил как тут оно скопировалось
Главное - ты его не понял нихрена.
0
0 / 0 / 0
Регистрация: 25.07.2022
Сообщений: 14
25.07.2022, 20:39  [ТС]
Verevkin, я понял и его и тебя, но я не знаю просто что мне делать тогда с этой степенью(
0
Злостный нарушитель
 Аватар для Verevkin
10860 / 5805 / 1282
Регистрация: 12.03.2015
Сообщений: 26,811
25.07.2022, 20:41
Цитата Сообщение от p1rfect Посмотреть сообщение
но я не знаю просто что мне делать тогда с этой степенью(
Это задача для целых чисел. Никакой power() тут не нужон.
Я там выше кот прицепил, ты его смотрел ваще?

0
25.07.2022, 20:58

Не по теме:

Цитата Сообщение от p1rfect Посмотреть сообщение
тоже 10^5, я просто условие с сириуса скопировал и не заметил как тут оно скопировалось
Так "я скопировал" или "оно скопировалось"? Разница между первым и вторым заключается в том, что после "я скопировал" ваша задача заключается в том, чтобы тщательно вычитать скопированное вами и проверить его на наличие подобных проблем. Вы это сделали? Или все такие "оно скопировалось"?

0
0 / 0 / 0
Регистрация: 25.07.2022
Сообщений: 14
25.07.2022, 21:13  [ТС]
TheCalligrapher, TheCalligrapher,
Миниатюры
Обратное число  
0
0 / 0 / 0
Регистрация: 25.07.2022
Сообщений: 14
25.07.2022, 21:27  [ТС]
Verevkin, не знаю как сделать без возведения в степень, я сделал бинарное возведение и сразу там брал процент и у меня прошли все тесты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <cmath>
 
using namespace std;
 
 
long long binpow(long long a,long long n,long long p) {
 
    if(!n)return 1;
    if(n % 2)return ((binpow(a,n-1,p) * a)%p);
    else{
        long long b = (binpow(a, n/2,p))%p;
        return ((b * b)%p);
    }
}
 
 
int main()
{
    long long t;
    cin >> t;
    for(long long i = 0;i < t;i++){
        long long p,a;
        cin >> p >> a;
        cout << binpow(a,p-2,p) << endl;
    }
}
0
Злостный нарушитель
 Аватар для Verevkin
10860 / 5805 / 1282
Регистрация: 12.03.2015
Сообщений: 26,811
25.07.2022, 21:53
Цитата Сообщение от p1rfect Посмотреть сообщение
не знаю как сделать без возведения в степень
Я ж тебе готовую функцию написал. Тебе её взять западло, штоли? Я спать тогда пошёл, сношайся дальше в одиночестве.
0
0 / 0 / 0
Регистрация: 25.07.2022
Сообщений: 14
25.07.2022, 22:03  [ТС]
Verevkin, Спокойно ночки, спасибки за помощь) я просто твой код не особо понял, такого не проходил ещё, я тебе скинул свой, он зашёл на все тесты
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.07.2022, 22:03
Помогаю со студенческими работами здесь

Обратное число
Совсем недавно начала изучать C++, и эта задача вызвала у меня затруднения. Помогите решить, пожалуйста. В этой задаче нужно...

Получить обратное число
3-ввести 3-х значное число допустим 741 получить обратное 147

Задача Обратное Число:
Обратное число В этой задаче нужно ответить на 1≤t≤105 запросов. Каждый запрос состоит из двух целых чисел 2≤p≤109 и 0&lt;a&lt;p, число p...

Максимальное обратное число
Помогите Пожалуйста! https://www.hackerrank.com/contests/homework-8/challenges/max-reverse-number Пользователь вводит число n и...

Оптимизировать код (Обратное число)
В этой задаче нужно ответить на 1≤t≤10^5 запросов. Каждый запрос состоит из двух целых чисел 2≤p≤10^9 и 0&lt;a&lt;p, число p является...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru