0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 7
1

Найдите такое минимальное натуральное n, что Bn делится на A

03.05.2019, 09:44. Показов 15492. Ответов 41
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста!
Даны два натуральных числа A и B (2 A, B 2 * 109). Найдите такое минимальное натуральное n, что Bn делится на A.

Входные данные
Программа получает на вход два числа A и B.

Выходные данные
Программа выводит одно значение n. Если никакая степень числа B не делится на A, то выведите число -1.
Вот рабочий код, но он не проходит один единственный тест
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def gcd(a, b):
    while a != 0 and b != 0:
        if a > b:
            a = a % b
        else:
            b = b % a
    return a + b
a, b = int(input()), int(input())
if a == b == 1:
    print (1)
    quit()
elif (a % 2 == 0 and b % 2 != 0) or (a % 2 != 0 and b % 2 == 0) or gcd(a, b) == 1:
    print(-1)
    quit()
 
flag = False
for i in range(1, int(max(a, b) ** (1/2)) + 100):
    if pow(b, i, a) == 0:
        flag = True
        break
if flag:
    print(i)
else:
    print(-1)
Что я не предусмотрел???
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2019, 09:44
Ответы с готовыми решениями:

Для заданного натурального А найти минимальное натуральное N такое, что N в степени N делится на A
Здравствуйте.Помогите понять математическую основу этой задачи, которую я хочу написать на PY....

Найти минимальное натуральное N такое, что N в степени N делится на A
Для того чтобы проверить, как её ученики умеют считать, Мария Ивановна каждый год задаёт им на дом...

Найти такое минимальное натуральное n, что B^n делится на A
Добрый день! Помогите, пожалуйста, решить задачу (лучше не код скинуть, а объяснить принцип...

Найти минимальное натуральное N такое, что N в степени N делится на A
Степень Для того чтобы проверить, как её ученики умеют считать, Мария Ивановна каждый год задаёт...

41
Модератор
Эксперт функциональных языков программированияЭксперт Python
36587 / 20317 / 4218
Регистрация: 12.02.2012
Сообщений: 33,614
Записей в блоге: 13
03.05.2019, 16:25 2
Цитата Сообщение от airh4ck Посмотреть сообщение
(2 A, B 2 * 109)
- что это за труха? Ведь есть же редактор формул.
0
0 / 0 / 0
Регистрация: 04.05.2019
Сообщений: 1
05.05.2019, 22:25 3
Зачем так много проверок? Хватает просто
Python
1
elif gcd(a, b) == 1:
0
0 / 0 / 0
Регистрация: 13.05.2019
Сообщений: 1
13.05.2019, 22:47 4
проверь делятся ли числа в начале
0
8 / 12 / 2
Регистрация: 08.08.2019
Сообщений: 63
12.08.2019, 11:08 5
Очень некрасивый, нерациональный код. Используйте только в крайнем случае
Python
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
def prime(n):
    k = 0
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            k += 1
            break
    if k == 0:
        return 0
    else:
        return 1
def wasd(n):
    a = list()
    tr = 0
    if prime(n) == 0 and n > 1:
        a.append(n)
        tr += 1
    if tr < 1:  
        for i in range(2, int(n ** 0.5) + 1):
            if n % i == 0:
                a.append(i)
            while n % i == 0:
                n //= i         
    if n > 1 and tr < 1:
        a.append(n)
    return a
def ebay(a, b):
    m = 1
    for i in a:
        if (i in b) == False:
            m = 0
    return m
def owl(a, b, night, snowly):
    c = list()
    for i in a:
        usa, ussr = night, snowly
        counter = 0
        while usa % i == 0:
            usa //= i
            counter += 1
        counterr = 0
        while ussr % i == 0:
            ussr //= i
            counterr += 1
        fuf = counter // counterr
        if counter % counterr != 0:
            fuf += 1
        c.append(fuf)
    d = max(c)
    return d
    
n = int(input())
snow = int(input())
night, snowly = n, snow
a = wasd(n)
b = wasd(snow)
m = ebay(a, b)
if m == 0:
    print(-1)
else:
    print(owl(a, b, night, snowly))
Но зато работает на отлично
0
Заблокирован
02.08.2020, 10:29 6
Зачем так много? Зачем столько функций? Всё проще:
Python
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
32
33
34
35
36
37
38
39
40
41
def factorization(n):
    p = []
    d = 2
    while d * d <= n:
        while n % d == 0:
            p.append(d)
            n //= d
        d += 1
    if n > 1:
        p.append(n)
    ans = []
    i = 0
    while i < len(p):
        j = i + 1
        while j < len(p) and p[i] == p[j]:
            j += 1
        if j - i == 1:
            ans.extend([p[i], 1])
        else:
            ans.extend([p[i], j - i])
        i = j
    return ans
a, b = int(input()), int(input())
if a == b == 1:
    print(1)
else:
    pa, pb = factorization(a), factorization(b)
    c = True
    for i in range(0, len(pa), 2):
        if b % pa[i] != 0:
            c = False
            break
    if not c:
        print(-1)
    else:
        m = -1
        for i in range(0, len(pa), 2):
            for j in range(0, len(pb), 2):
                if pa[i] == pb[j]:
                    m = max(m, (pa[i + 1] + pb[j + 1] - 1) // pb[j + 1])
        print(m)
Кратенькое объяснение:
найти такое https://www.cyberforum.ru/cgi-bin/latex.cgi?n, что https://www.cyberforum.ru/cgi-bin/latex.cgi?b^n\equiv 0 (mod a)
https://www.cyberforum.ru/cgi-bin/latex.cgi?a = {p_1}^{\alpha _1}{p_2}^{\alpha _2}...{p_m}^{\alpha _m}
https://www.cyberforum.ru/cgi-bin/latex.cgi?b = {p_1}^{\beta _1}{p_2}^{\beta  _2}...{p_m}^{\beta  _m}
Если существует такое https://www.cyberforum.ru/cgi-bin/latex.cgi?i, что https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha _i > 0, \beta _i = 0, то ответ -1, так как никогда в разложении https://www.cyberforum.ru/cgi-bin/latex.cgi?b^n не будет https://www.cyberforum.ru/cgi-bin/latex.cgi?p_i.
В противном случае - если ответ - m, то для любого https://www.cyberforum.ru/cgi-bin/latex.cgi?i:      m = max(m,   \left[\frac{\alpha _i}{\beta _i} \right]) - минимальная степень, чтобы был возможен ответ.

Добавлено через 2 минуты
И еще: странно, что у Вас работает функция quit()
0
Эксперт Python
8196 / 4321 / 1832
Регистрация: 27.03.2020
Сообщений: 7,146
02.08.2020, 10:50 7
Python
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
def factorization(n):
    p = {}
    d = 2
    while d * d <= n:
        while n % d == 0:
            p[d] = p.get(d,0) + 1
            n //= d
        d += 1
    if n > 1:
        p[n] = p.get(n,0) + 1
    return p
 
 
a = int(input())
b = int(input())
pa = factorization(a)
pb = factorization(b)
n = 1
for key in pa :
    if not key in pb :
        n = -1
        break
    k = -(-pa[key]//pb[key])
    if k > n :
        n = k 
print(n)
Разложение на простые множители
Затем берется максимальное отношение степени множителя в "А" к аналогичному в "В"
2
0 / 0 / 0
Регистрация: 29.07.2020
Сообщений: 31
03.08.2020, 22:20 8
Gdez, Здравствуйте! Можете пожалуйста разъяснить принцип своего решения (можно относительно теории чисел, я тоже из Сириуса ). Я вас еще спрашивал про задачу о романе в томах (огромное спасибо за объяснение, сам решил все остальные задачи про бин поиск благодаря вам). Мой главный вопрос: каким образом "взятие максимального (почему не минимального, просят же найти минимальное n) отношения степени множителя в А к аналогичному в В" гарантирует нам, что это будет правильным ответом (а не будет например больше или меньше нужного B^n, а также будет делиться на А, ведь изначально B может не делиться на A)? Как я понял, вы находите это пресловутое максимальное отношение и возводите в него все простые множители разложения числа B. Например есть числа A: 24 = 2^3 * 3^1 и B: 36 = 2^2 * 3^2. Далее максимальное отношение степеней равно [3/2] = 2. Таким образом у нас получается: B^n = (2^2 * 3^2)^2 = 36^2 = 576, которое делится и на 36, и на 24.
0
Эксперт Python
8196 / 4321 / 1832
Регистрация: 27.03.2020
Сообщений: 7,146
03.08.2020, 22:49 9
Здравствуйте
Ну здесь просто - значения степеней простых множителей в числе А должно быть меньше или равно значениям степеней таких же множителей в числе В.
Если р1 = 7, р2 = 5, р3 = 4 (значение степеней простых множителей) в числе А, а в числе В - р1 = 2, р2 = 1, р3 = 7, р4 = 2.
Значит для для В^n р1>=7 (увеличить в 3,5 раза) р2>= 5 (в 5 раз), р3 >=4 (уже больше), р4 - значения не имеет (его нет в А). Так как увеличить степень отдельным множителям не можем, то увеличиваем на максимум - в 5 раз и получим для В^n - p1=10, p2=5, p3=35, p4= 10. При В^n/A получим:
(р1^10 * р2^5 * р3^35 * р4^10) / (р1^7 * р2^5 * р3^4) = р1^(10-7) * р2^(5-5) * р3^(35-4) * р4^10 = р1^3 * р2^0 * р3^31 * р4^10
У множителя р2 степень минимальна и равна "0". Остальные не отрицательны. Если мы взяли n = 4, то получили бы р2^(-1), то есть = р1^1 * р3^24 * р4^8 / р2^(-1)
Так как р1, р2 и тд простые множители, то последнее решение не было бы целым числом.
Напомню, "n" для р1 предполагалось 3.5, для р2 - 5, для р3 ~ 0.57, для р4 - 0
Поэтому нужно находить "максимальное" отношение показателей степени у соответствующих множителей для получения "минимального" n.
0
0 / 0 / 0
Регистрация: 29.07.2020
Сообщений: 31
04.08.2020, 10:29 10
Gdez, Спасибо, что объяснили. Я решил задачу. Всё бы хорошо, но из за некоторых различий между С++ и Питоном (Я пишу код на С++) мне пришлось добавить в код еще несколько конструкций и если честно я не понимаю почему мой код работает. Вот мой код, покажу что изменил (ПРОГРАММА ОЧЕНЬ ПОХОЖА НА ВАШУ):
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
 
#include <iostream>
#include <vector>
using namespace std;
 
vector <long long> prime(long long n){
    vector <long long> ans(2000000);
    long long d = 2;
 
    while (d * d <= n){
        while (n % d == 0){
            ++ans[d];
            n /= d;
        }
        ++d;
    }
 
    if (n >= 2000000){
        ans[0] = -1;
        ans[1] = n;
        return ans;
    }
 
    if (n > 1){
        ++ans[n];
    }
 
    return ans;
}
 
 
int main() {
 
    long long a, b, sizea, sizeb, minsize, x, k;
    vector <long long> fora;
    vector <long long> forb;
    cin >> a >> b;
 
    fora = prime(a);
    forb = prime(b);
    sizea = fora.size();
    sizeb = forb.size();
    minsize = min(sizea, sizeb);
    k = 1;
 
    if (fora[0] == -1 || forb[0] == -1){
            if (b % a != 0 && forb[1] % a == 0){
                cout << -1;
                return 0;
            }
        }
 
    for (long long i = 2; i < minsize; ++i){
        if (fora[i] > 0 && forb[i] == 0){
            cout << -1;
            return 0;
        } else {
            if (fora[i] == forb[i]){
                continue;
            }
        }
 
        if (fora[i] % forb[i] == 0){
            x = fora[i] / forb[i];
        } else {
            x = fora[i] / forb[i] + 1;
        }
 
        if (x > k){
            k = x;
        }
    }
 
    cout << k;
 
    return 0;
}
Основная проблема в том, что вектор в С++ может вместить только несколько миллионов чисел, и если a или b (За разложение a и b на простые множители ответственны векторы fora и forb соответственно) будут слишком большими, да и еще простыми, то d окажется слишком большим и произойдет выход за границы вектора. Поэтому если n останется слишком большим после прохождения цикла в функции prime, то я записываю это n на 1 место в векторе, а также помечаю этот вектор, вписав на нулевое место число -1 (Это нужно только для пометки, никакого математического смысла это -1 не несет). И теперь эти данные я использую при проверке условия if (fora[0] == -1 || forb[0] == -1), работу которого я собственно не понимаю. Особенно непонятна строчка if (b % a != 0 && forb[1] % a == 0). Ведь если у нас после прохождения цикла в функции prime остаётся такое большое n, то наверное это значит, что n - простое число -> имеет только два делителя -> чтобы выполнилось "forb[1] % a == 0" а должно равняться forb[1], НО если написать forb[1] == a, то программа провалит 1 тест. Тогда получается что a может быть меньше или равно forb[1] (Как?). К сожалению также мне не удалось реализовать формулу из вашего кода k = -(-pa[key]//pb[key]) так как С++ по своему разбирается с отрицательными числами.

Добавлено через 11 минут
Gdez, Добавил комментарии в код

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
#include <vector>
using namespace std;
 
vector <long long> prime(long long n){ // ФУНКЦИЯ КОТОРАЯ ВОЗВРАЩАЕТ ВЕКТОР И ПРИНИМАЕТ ЧИСЛО N
    vector <long long> ans(2000000); // ВЕКТОР С УКАЗАННЫМ РАЗМЕРОМ
    long long d = 2;
 
    while (d * d <= n){ // КУСОЧЕК ИЗ ВАШЕГО КОДА
        while (n % d == 0){
            ++ans[d];
            n /= d;
        }
        ++d;
    }
 
    if (n >= 2000000){ // ЕСЛИ N СЛИШКОМ БОЛЬШОЕ ТО ЗАПИСЫВАЕМ ЕГО В ВЕКТОР И РАЗБИРАЕМСЯ С НИМ ПОЗЖЕ
        ans[0] = -1; // А ТАКЖЕ ПОМЕЧАЕМ ЭТОТ ВЕКТОР
        ans[1] = n;
        return ans;
    }
 
    if (n > 1){
        ++ans[n];
    }
 
    return ans;
}
 
 
int main() {
 
    long long a, b, sizea, sizeb, minsize, x, k;
    vector <long long> fora;
    vector <long long> forb;
    cin >> a >> b;
 
    fora = prime(a);
    forb = prime(b);
    sizea = fora.size();
    sizeb = forb.size();
    minsize = min(sizea, sizeb); // СКОЛЬКО СТЕПЕНЕЙ ОДИНАКОВЫХ МНОЖИТЕЛЕЙ НУЖНО СРАВНИВАТЬ
    k = 1;
 
    if (fora[0] == -1 || forb[0] == -1){ // ЭТО ПИСАЛ Я, ЭТО РАБОТАЕТ, НО Я НЕ ПОНИМАЮ КАК
            if (b % a != 0 && forb[1] % a == 0){
                cout << -1;
                return 0;
            }
        }
 
    for (long long i = 2; i < minsize; ++i){
        if (fora[i] > 0 && forb[i] == 0){ // ЕСЛИ ТАКОЙ МНОЖИТЕЛЬ В РАЗЛОЖЕНИИ НЕ ВСТРЕЧАЕТСЯ ТО ВСЕ ДО СВИДАНИЯ
            cout << -1;
            return 0;
        } else {
            if (fora[i] == forb[i]){ // ЕСЛИ СТЕПЕНИ ЭТИХ МНОЖИТЕЛЕЙ РАВНЫ ТО НИЧЕГО ДЕЛАТЬ НЕ НАДО
                continue;
            }
        }
 
        if (fora[i] % forb[i] == 0){ // РЕАЛИЗАЦИЯ  k = -(-pa[key]//pb[key])
            x = fora[i] / forb[i];
        } else {
            x = fora[i] / forb[i] + 1;
        }
 
        if (x > k){
            k = x;
        }
    }
 
    cout << k;
 
    return 0;
}
0
Эксперт Python
8196 / 4321 / 1832
Регистрация: 27.03.2020
Сообщений: 7,146
04.08.2020, 12:41 11
По условию n <= 2*10^9
Т.е. в тестах нет больше этого числа
-(-pa[key]//pb[key]) - округление вверх - 3/2 = 2 , 2/2 = 1

Добавлено через 8 минут
Количество множителей у чисел больше 30 на порядок меньше самого числа - у 30 три множителя
0
0 / 0 / 0
Регистрация: 29.07.2020
Сообщений: 31
04.08.2020, 16:37 12
Gdez, Да, я понимаю. Проблема в том, что из-за индивидуальных особенностей C++ я не могу создать массив размером больше, чем несколько миллионов (точную цифру не знаю). Представьте, что n - простое число и на числовой прямой находится рядом с числом 2*10^9. Тогда, в функции factorization после окончания цикла while d * d <= n, n останется самим собой (ни один раз n не разделится на d). В этом случае придётся выполнить операцию p[n] += 1, но тогда произойдёт выход за границы массива, а увеличить его вместимость я не могу. Поэтому приходится прибегать к использованию каких-то костылей, таких как условие if (fora[0] == -1 || forb[0] == - 1), работу которого Я НЕ МОГУ ПОНЯТЬ (Это мой главный вопрос, выделю капсом), хоть я сам и написал это условие. А именно я не могу понять работу условия if (b % a != 0 && forb[1] % a == 0). Ещё вопрос: Если после окончания цикла while d * d <= n, n все еще больше 1, могу ли я утверждать, что оставшееся от деления на d n является простым числом? (Например: n = 14 -> d = 2 -> n = 14 : 2 = 7 -> n = 7), при условии, что ЦИКЛ ПРОВЕРИТ ВСЕ d в диапазоне [2;2000000]. Если я так могу утверждать, то получается, что условие forb[1] % a == 0 я могу заменить на forb[1] == a так как forb[1] = n (n которое не до конца разделилось), а также так как n является простым числом (если моя гипотеза об утверждении, что неразделившееся n - простое число верна). Соответственно у такого простого n может быть только один делитель равный a, так как, я повторюсь, это n является простым числом. Но дело в том, что если я заменю изначальное условие на forb[1] == a, то один тест не будет проходить. Я в замешательстве: моя гипотеза одновременно логически верна, но на практике не работает. Меня в принципе не устраивает forb[1] % a == 0 (Это условие изначально написано в коде). Меня бы скорей устроило forb[1] % a != 0 (не равно) потому, что по логике A и B должны иметь одинаковый набор простых множителей, и если n не делится на А, то тогда нужно сразу выводить -1, но по какой-то причине нужно действовать по другому. Как это объяснить с точки зрения математики?
0
Эксперт Python
8196 / 4321 / 1832
Регистрация: 27.03.2020
Сообщений: 7,146
04.08.2020, 17:10 13
А почему у тебя n <= 2000000 ?

Добавлено через 35 секунд
По условию 2000000 000 или 2000000000

Добавлено через 7 минут
Подпрограмма прогоняет числа до корня квадратного от исходного. От этого значения до числа n множителей больше математически не может быть, кроме самого числа
Т.е. forb лежит в диапазоне [2 : \sqrt{n}] плюс еще само n

Добавлено через 3 минуты
И еще - в коде не нашел проверки : есть ли очередное значение fora в списке forb
0
0 / 0 / 0
Регистрация: 29.07.2020
Сообщений: 31
04.08.2020, 17:10 14
Gdez, Как я понимаю, элементы массива P являются степенями, а их индексы - их множителями. Например если P[2] = 2 -> 2^2. Теперь представьте наихудшую ситуацию, когда n максимально приближенно к 2 * 10^9 И ЯВЛЯЕТСЯ ПРОСТЫМ ЧИСЛОМ. Таким образом, после окончания цикла в функции n останется самим собой (n > 1). И тогда мне придётся выполнять операцию P[n] += 1. Но я на могу обратиться к такому большому индексу, так как максимальная вместимость массива - всего несколько миллионов. Если попытаетесь ещё расширить массив, то программа выдаст ошибку. Таким образом, с n, большим чем 2000000 (Это число я выбрал сам, так как по-моему мнению оно гарантирует перебор всех возможных d или другими словами в худшем случае d может равняться 2 000 000). Поэтому с «трудными» n, которые не смогли разделиться, даже пройдя через цикл while, приходиться работать ИНДИВИДУАЛЬНО.
0
Эксперт Python
8196 / 4321 / 1832
Регистрация: 27.03.2020
Сообщений: 7,146
04.08.2020, 17:13 15
Кажется понял
У меня P - словарь, где ключ - это множитель, а значение ключа - степень этого множителя
0
0 / 0 / 0
Регистрация: 29.07.2020
Сообщений: 31
04.08.2020, 17:13 16
Gdez, первый if в цикле for проверяет НЕ встречается ли элемент А в Б. Если не встречается, то выводит -1, иначе - идёт дальше.
0
Эксперт Python
8196 / 4321 / 1832
Регистрация: 27.03.2020
Сообщений: 7,146
04.08.2020, 17:13 17
В С++ словари же тоже есть?
0
0 / 0 / 0
Регистрация: 29.07.2020
Сообщений: 31
04.08.2020, 17:18 18
Gdez, Да, вы все правильно поняли

Добавлено через 1 минуту
Gdez, да, есть. Но кстати тут я не использую словарь, просто массив, где его элемент - степень, а индекс - множитель

Добавлено через 2 минуты
Gdez, Кстати, проверка fora[i] == forb [i] абсолютно не нужна (в цикле for). Достаточно и моей реализации подсчета переменной k, как у вас в коде, у меня это x
0
Эксперт Python
8196 / 4321 / 1832
Регистрация: 27.03.2020
Сообщений: 7,146
04.08.2020, 17:22 19
Если не ошибаюсь, индексы идут непрерывно по натуральным числам.
Тогда Р очень большая
Например для n = 36 будет р[0] = 0, р[1] = 0, р[[2] = 2, р[3] = 2, р[4] = 0 ...... р[36]=0
Так?
0
0 / 0 / 0
Регистрация: 29.07.2020
Сообщений: 31
04.08.2020, 17:23 20
Gdez, Все верно. Если попросить вывести P после окончания цикла, то будет очень много нулей
0
04.08.2020, 17:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.08.2020, 17:23
Помогаю со студенческими работами здесь

Найти минимальное натуральное N такое, что N в степени N делится на A
Степень Для того чтобы проверить, как её ученики умеют считать, Мария Ивановна каждый год задаёт...

Найти минимальное натуральное N такое, что N в степени N делится на A
Для того чтобы проверить, как её ученики умеют считать, Мария Ивановна каждый год задаёт им на дом...

Найти минимальное натуральное N такое, что N в степени N делится на A
Степень Для того чтобы проверить, как её ученики умеют считать, Мария Ивановна каждый год задаёт...

Найти минимальное натуральное N такое, что N в степени N делится на A
Для того чтобы проверить, как её ученики умеют считать, Мария Ивановна каждый год задаёт им на дом...

Найдите наименьшее натуральное n такое, что 2^n + 5^n − n делится на 1000
Найдите наименьшее натуральное n такое, что 2^n + 5^n − n делится на 1000. Правильно я начинаю...

Найти минимальное натуральное N такое, что N в степени N делится на заданное число
Степень Для того чтобы проверить, как её ученики умеют считать, Мария Ивановна каждый год задаёт...

Для заданного натурального A найти минимальное натуральное N такое, что N в степени N делится на A
Задача: Для того чтобы проверить, как её ученики умеют считать, Мария Ивановна каждый год задаёт...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru