361

Re: Цікаві задачі

lucas-kane, узагалі не те

Ніби все нескладно, але у мене температура під 38, можу сильно переплутати.

Ідемо з кінця. Знаходимо різницю між a[k] і a[k-1] - це кількість інверсій для числа p[k], тобто кількість чисел, більших за p[k], що йдуть перед ним. Оскільки в кінці вже кілька чисел зайнято, то треба перевірити, які з них більші і відповідно зменшити значення. Таким чином визначаємо p[k] і переходимо на наступний крок. Загальна складність - O(n^2).

Подякували: leofun011

362

Re: Цікаві задачі

Ні, щось не працює

363

Re: Цікаві задачі

Спитав ChatGPT

ChatGPT написав:

Одним з можливих алгоритмів для відновлення перестановки з масиву кількості інверсій на префіксі можна використати алгоритм "merge sort", який за O(n log n) відсортує вхідний масив і одночасно підрахує кількість інверсій у ньому.

Оскільки ми знаємо кількість інверсій на префіксі кожної довжини, то ми можемо побудувати масив пар (індекс, кількість інверсій) для кожного елемента вхідного масиву. Після того, як ми відсортуємо цей масив, ми можемо відновити вихідну перестановку, пройшовши по відсортованому масиву і додаючи до вихідного масиву індекси у порядку зростання кількості інверсій.

Отже, код може виглядати наступним чином:

n = int(input())
a = list(map(int, input().split()))

# Побудова масиву пар (індекс, кількість інверсій)
pairs = [(i, a[i-1]) for i in range(1, n+1)]

# Сортування масиву пар за зростанням кількості інверсій
sorted_pairs = sorted(pairs, key=lambda x: x[1])

# Відновлення вихідної перестановки
p = [0] * n
current_index = 1
for pair in sorted_pairs:
    p[pair[0]-1] = current_index
    current_index += 1

# Виведення відповіді
print(' '.join(map(str, p)))
Подякували: leofun011

364

Re: Цікаві задачі

https://www.reddit.com/r/learnpython/co … utput_for/

Людина випадково(?) виявила, що 10001^10110 = 111 (побітове виключне АБО дає правильну відповідь для десяткових чисел, неправильно сприйнятих як двійкові).
Які ще є такі збіги?

Подякували: Firefox is dead, leofun012

365 Востаннє редагувалося Firefox is dead (28.02.2023 19:28:12)

Re: Цікаві задачі

koala написав:

https://www.reddit.com/r/learnpython/co … utput_for/

Людина випадково(?) виявила, що 10001^10110 = 111 (побітове виключне АБО дає правильну відповідь для десяткових чисел, неправильно сприйнятих як двійкові).
Які ще є такі збіги?

якщо я правильно зрозумів,
далеко йти не треба

>>> 10^1 (2 та 1)
11 (3)

>>> 111^101 (7 та 5)
10 (2)

Подякували: leofun011

366

Re: Цікаві задачі

до 8-значних таких пар 1356. Аж по 11111110^11111111 = 1.

Подякували: leofun011

367

Re: Цікаві задачі

Число n>99. Знайти кількість сотен в ньому.

368

Re: Цікаві задачі

ur_naz написав:

Число n>99. Знайти кількість сотен в ньому.

Ви маєте на увазі n%1000/100? І що тут цікавого?

369

Re: Цікаві задачі

це не найліпше рішення

370

Re: Цікаві задачі

ur_naz написав:

це не найліпше рішення

(фото, uk)

ur_naz пригнічує нас своїм генієм.

А показати своє рішення сміливості забракло ?

Подякували: Chemist-i1

371

Re: Цікаві задачі

leofun01

кидай то айті, малюй комікси

372

Re: Цікаві задачі

ur_naz написав:

це не найліпше рішення

По-перше, я не пропонував рішення, я уточнював умову - у числа 2023 "число сотень" 0 чи 20?
По-друге, оголосіть тоді вимоги до "ліпшості". За довжиною коду str(n)[-2] дійсно коротше, і для невеликих чисел навіть швидше, а от чи ліпше?

Подякували: leofun011

373

Re: Цікаві задачі

по-перше, це, вже інша мова
по-друге, якщо це Python, то str повертає символ, а не число
по-третє, [-2] повертає десятки, а не сотні

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD6
4)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a=12345
>>> str(a)[-2]
'4'
>>>

Краще вже а//1000%100, бо не має подвійного перетворення

374

Re: Цікаві задачі

Так, вибачте, о премудрий ur_naz, дійсно, там -3 і страшне перетворення, правда, без ділення. То може тепер ви зглянетеся на нещасних, що зібралися тут, і нарешті нагородите нас відповідями на питання наші? Зокрема - які саме критерії "ліпшості" того чи іншого розв'язку?

375

Re: Цікаві задачі

ми ж не в школі... всі крітерії відомі

376

Re: Цікаві задачі

ur_naz написав:

ми ж не в школі... всі крітерії відомі

"Ми ж не в школі" чомусь найчастіше кажуть ті, хто так і не навчився речення з великих літер починати.
Так, критерії відомі. І ви що, серйозно очікуєте, що вам у цій темі на таке питання напишуть найкращі варіанти за кожним критерієм? Візьмемо такий критерій, як швидкість виконання. Процесорів існують тисячі; мов - сотні, компіляторів - від одиниць до десятків для кожної. А ще є різні ОС і різні налаштування. Вам потрібна єдина відповідь за цим критерієм? Тоді потрудіться сформулювати завдання на професійному рівні, ми не в школі.

377

Re: Цікаві задачі

це не схоже на логіку вирішення задачі з підручника 1988 року!

378

Re: Цікаві задачі

ur_naz написав:

це не схоже на логіку вирішення задачі з підручника 1988 року!

Ваші уточнення про "ліпшість" теж явно не з того підручника.

379

Re: Цікаві задачі

Мої уточнення не обов'язкові

380

Re: Цікаві задачі

ur_naz написав:

Мої уточнення не обов'язкові

Дякую, зрозуміло. Ви просто ляпнули дурню, а тепер не знаєте, як викараскатися.