Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
3 / 3 / 0
Регистрация: 28.01.2022
Сообщений: 48

Разложение на чётнопростые Сириус

26.05.2024, 22:24. Показов 697. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В этой задаче рассматриваются только чётные целые числа.

Чётное натуральное число n будем называть чётнопростым числом, если его нельзя представить в виде произведения двух чётных чисел. Например, числа 2 и 6 — чётнопростые.

Очевидно, что каждое число либо является чётнопростым, либо разлагается в произведение чётнопростых. Но такое разложение на чётнопростые не всегда единственно.

Входные данные: Дано чётное натуральное n≤10^9.

Выходные данные: Если число n чётнопростое, выведите слово prime. Если это число единственным образом разлагается в произведение двух и более чётнопростых, то выведите слово single, а в следующей строке выведите разложение этого числа на чётнопростые множители. Если число допускает несколько различных разложений на чётнопростые, то выведите слово many, а в следующих двух строках выведите два каких-нибудь различных разложения числа на чётнопростые множители.

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
61
62
63
64
65
66
def col_del(n):
    col_list=[]
    for i in range(2,int(n**(1/2))+1):
        if i==n//i:
            col_list.append(i)
        elif n%i==0:
            col_list.append(i)
            col_list.append(int(n/i))
    return sorted(list(col_list))
 
def easy2(n):
    list_easy2=[]
    for i in col_del(n):
        if i%2==0 and i%4!=0:
            list_easy2.append(i)
    b=1
    list_ans1=[]
    list_ans2=[]
    if len(list_easy2)==1:
        g=list_easy2[0]
        m=1
        while m!=n:
            m*=g
            list_ans2.append(g)
        list_ans1.append(list_ans2)
        return list_ans1
    for i in range(len(list_easy2)):
        b*=list_easy2[i]
        list_ans2.append(list_easy2[i])
        for j in range(i,len(list_easy2)):
            b*=list_easy2[j]
            list_ans2.append(list_easy2[j])
            if b==n:
                break
            elif b>n:
                b//=list_easy2[j]
                list_ans2.remove(list_easy2[j])
                break
        if n//b in list_easy2:
            list_ans2.append(n//b)
        d=1
        for v in list_ans2:
            d*=v
            if d==n and list_ans2 not in list_ans1:
                list_ans1.append(sorted(list_ans2))
        list_ans2.clear()
        b=1
    return list_ans1
 
n=int(input())
if n%4!=0:
    print('prime')
else:
    list_ans=easy2(n)
    if len(list_ans)==1:
        print('single')
        print(' '.join(map(str,list_ans[0])))
    else:
        print('single')
        print(' '.join(map(str,list_ans[0])))
        print('many')
        if len(list_ans)==2:
            print(' '.join(map(str,list_ans[1])))
        else:
            print(' '.join(map(str,list_ans[1])))
            print(' '.join(map(str,list_ans[2])))
Неправильный ответ на 3 тесте. Помогите пожалуйста!

Добавлено через 44 минуты
Нашел и изменил код в интернете, но так и выдает неправильный ответ на 3 тесте.

Код:
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
def solve(n):
    d = 0
    while not (n&1):
        d += 1
        n //= 2
 
    a = [2]*d
    a[-1] *= n
 
    if d == 1:
        print("prime")
        return
    print("single")
    print(" ".join(map(str, a)))
    col=0
    for x in range(3, int(n**.5)+1, 2):
        if not (n%x):
            b = a[:]
            b[-1] //= x
            b[-2] *= x
            if not col:
                print('many')           
            print(" ".join(map(str, b)))
            col+=1
        if col==2:
            return
 
n=int(input())
solve(n)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.05.2024, 22:24
Ответы с готовыми решениями:

Разложение на чётнопростые (Сириус)
Разложение на чётнопростые В этой задаче рассматриваются только чётные целые числа. Чётное натуральное число n будем называть...

Разложение на четнопростые
Здравствуйте! Задача: Разложение на чётнопростые В этой задаче рассматриваются только чётные целые числа. Чётное натуральное...

Разложение на простые множители (сириус)
Не могу решить казалось бы простую задачу, помогите пожалуйста с решением. (знаю что такая тема была на форуме, но от туда ничего не...

1
3 / 3 / 0
Регистрация: 28.01.2022
Сообщений: 48
01.07.2024, 12:21  [ТС]
Вернулся к этой задаче, после того, как набрался знаний и решил самостоятельно.
По итогу получился такой код:
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
def solve(n):
    d = 0 
    while not (n&1):
        d += 1
        n //= 2
 
    a = [2]*d
    a[-1] *= n
 
    if d == 1:
        print("prime")
        return
    col=0
    for x in range(3, int(n**.5)+1, 2):
        if not (n%x):
            b = a[:]
            b[-1] //= x
            b[-2] *= x
            if not col:
                c = b
            col+=1
            if col == 2:
                break
    if col == 2:
        print('many')
        print(" ".join(map(str, c)))
        print(" ".join(map(str, b)))
    elif col == 1:
        print('many')
        print(" ".join(map(str, a)))
        print(" ".join(map(str, c)))        
    else:
        print("single")
        print(" ".join(map(str, a)))
 
n=int(input())
solve(n)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.07.2024, 12:21
Помогаю со студенческими работами здесь

Разложение на четнопростые
Разложение на чётнопростые В этой задаче рассматриваются только чётные целые числа. Чётное натуральное число n будем называть...

Разложение на чётнопростые
В этой задаче рассматриваются только чётные целые числа. Чётное натуральное число n будем называть чётнопростым числом, если его...

Разложение на чётнопростые
В этой задаче рассматриваются только чётные целые числа. Чётное натуральное число n будем называть чётнопростым числом, если его...

Разложение дроби на простейшие. Как получается такое разложение (книга Пискунова, том 1, страница 319)
в книге пискунова том 1 страница 319 приведено разложение дроби \frac{F(x)}{f(x) на слагаемые при условии что f(x)=(x-a)^\alpha \ldots...

Лесенки сириус
Лесенкой называется набор кубиков, в котором каждый следующий горизонтальный слой содержит меньше кубиков, чем слой под ним. ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
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. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru