0 / 0 / 0
Регистрация: 14.10.2020
Сообщений: 10
|
||||||
1 | ||||||
Оптимизация кода03.11.2020, 18:16. Показов 1793. Ответов 10
Добрый день! Я только учусь и столкнулся с такой проблемой: Задание на кодварсе следующее: есть целые числа от m до n включительно. Нужно найти такие, чтобы сумма квадратов их делителей сама являлась квадратом. К примеру делители числа 42 это:1, 2, 3, 6, 7, 14, 21, 42. Квадраты их равны 1, 4, 9, 36, 49, 196, 441, 1764. Сумма квадратов делителей равна 2500, что является квадратом 50. Я написал код, на дефолтных проверках он проходит, но когда кодварс пытается сам подставить свои значения, то получается ошибка:Execution Timed Out. Помогите оптимизировать код и объяснить что с ним не так. Спасибо
0
|
03.11.2020, 18:16 | |
Ответы с готовыми решениями:
10
Оптимизация кода Оптимизация кода Оптимизация кода Оптимизация кода Оптимизация кода |
03.11.2020, 18:31 | 2 |
Вместо **0.5 использовать math.sqrt. Вместо **2, соответственно, j*j.
Вместо range(..., i+1) использовать sqrt(i) (в качестве правой границы цикла). Провека на целость - не надо извлекать корень дважды.
0
|
0 / 0 / 0
Регистрация: 14.10.2020
Сообщений: 10
|
|
03.11.2020, 18:52 [ТС] | 3 |
Это по сути ничего не изменит. А насчет правой границы: почему то когда я пишу вместо i+1 "math.ceil(math.sqrt(i)+1) у меня не меняется j во всех итерациях
0
|
03.11.2020, 19:17 | 4 |
zm127, проход до sqrt() изменит, для каждого числа переход от O(n) до O(sqrt(n)).
Почему не меняется j - не знаю, должен меняться. Учитывая, что надо пройти несколько чисел, можно попробовать что-нибудь закешировать, но пока не вижу, что.
0
|
8581 / 4410 / 1852
Регистрация: 27.03.2020
Сообщений: 7,226
|
|
03.11.2020, 19:51 | 5 |
zm127, ограничения по n, m какие?
0
|
0 / 0 / 0
Регистрация: 14.10.2020
Сообщений: 10
|
|
03.11.2020, 20:03 [ТС] | 6 |
list_squared(1, 250), Ответ должен быть такой:[[1, 1], [42, 2500], [246, 84100]])
Такой ответ у меня и получается,но видимо на проверке рандомными числами от кодварса выдает что время ожидания превышено
0
|
8581 / 4410 / 1852
Регистрация: 27.03.2020
Сообщений: 7,226
|
|||||||||||
03.11.2020, 20:38 | 7 | ||||||||||
Сообщение было отмечено zm127 как решение
Решение
zm127, максимальная разница между входными числами дается?
Добавлено через 1 минуту zm127, попробуй. Может прокатит
Или
1
|
0 / 0 / 0
Регистрация: 14.10.2020
Сообщений: 10
|
|
03.11.2020, 21:04 [ТС] | 8 |
Работает, спасибо большое, сейчас буду разбираться в коде
0
|
Status 418
|
|
03.11.2020, 21:07 | 9 |
list_squared(1, 10**8):
Кликните здесь для просмотра всего текста
[[1, 1],
[42, 2500], [246, 84100], [287, 84100], [728, 722500], [1434, 2856100], [1673, 2856100], [1880, 4884100], [4264, 24304900], [6237, 45024100], [9799, 96079204], [9855, 113635600], [18330, 488410000], [21352, 607622500], [21385, 488410000], [24856, 825412900], [36531, 1514610724], [39990, 2313610000], [46655, 2313610000], [57270, 4747210000], [66815, 4747210000], [92664, 13011964900], [125255, 16430112400], [156570, 35532250000], [182665, 35532250000], [208182, 60762250000], [212949, 51437332804], [242879, 60762250000], [273265, 77829840400], [380511, 163426147600], [391345, 159696144400], [411558, 240198010000], [539560, 410752810000], [627215, 410752810000], [693160, 668633290000], [730145, 557979120400], [741096, 821017210000], [773224, 796252828900], [814463, 668633290000], [931722, 1219036810000], [992680, 1371943690000], [1069895, 1195304890000], [1087009, 1219036810000], [1143477, 1475034540100], [1166399, 1371943690000], [1422577, 2044042090000], [1592935, 2643160608400], [1815073, 3327340810000], [2281255, 5423402592400], [2544697, 6498930490000], [2713880, 10268820250000], [2722005, 8796088272400], [2828385, 9556753960000], [3054232, 12389344022500], [3132935, 10268820250000], [3145240, 13949478010000], [3188809, 10268820250000], [3508456, 16715832250000], [4026280, 22492823875600], [4647985, 22492823875600], [4730879, 22492823875600], [5024488, 34298592250000], [5054015, 26676192010000], [5143945, 27619018944400], [5260710, 41075281000000], [5938515, 41667283200400], [6128024, 51101052250000], [6236705, 40593463690000], [6366767, 41008398288400], [6956927, 48643650250000], [6996904, 65032773204100], [7133672, 69417224890000], [7174440, 82101721000000], [7538934, 79625282890000], [7736646, 83183520250000], [7818776, 83183520250000], [8292583, 69417224890000], [8429967, 82101721000000], [8504595, 85495543104400], [8795423, 79625282890000], [9026087, 83183520250000], [9963071, 99810090250000], [11477130, 194574601000000], [11538505, 139610766490000], [11725560, 219902206810000], [12158135, 155004990010000], [12939480, 260131092816400], [12948776, 222689064472900], [13495720, 256720506250000], [13592118, 256720506250000], [13736408, 256720506250000], [15203889, 260131092816400], [15857471, 256720506250000], [16149848, 352301638090000], [16436490, 399240361000000], [16487415, 324554637160000], [16909849, 289604836128400], [18391401, 388917841000000], [18422120, 469260440256400], [20549528, 562320596890000], [20813976, 647219040250000], [20871649, 436988086147600], [21251412, 683572005944100], [22713455, 538266912336400], [23250645, 639923030890000], [23630711, 562320596890000], [24738935, 640317720250000], [26338473, 798006001000000], [26343030, 1026882025000000], [26594568, 1094306248090000], [28113048, 1180753916410000], [29429144, 1153804643290000], [29778762, 1238934402250000], [29973414, 1253591917210000], [30666090, 1394947801000000], [30915027, 1094306248090000], [34207446, 1671583225000000], [34741889, 1238934402250000], [34968983, 1253591917210000], [35721896, 1735430622250000], [37113593, 1392676413216400], [37343065, 1451977307232400], [38598255, 1747952344590400], [39256230, 2249282387560000], [42021720, 2761901894440000], [44935590, 2988262225000000], [45795688, 2798293621210000], [45798935, 2249282387560000], [48988758, 3429859225000000], [49375521, 2761901894440000], [51516049, 2678594516419600], [51912289, 2733777693091600], [52867081, 2798293621210000], [56215914, 4389206926188100], [59748234, 5110105225000000], [61116363, 4325879688816400], [62158134, 5369738562250000], [63286535, 4190089414810000], [65585233, 4389206926188100], [66903270, 6607901521000000], [68219814, 6503277320410000], [68678280, 7397510237088400], [72006543, 5972971225000000], [72517823, 5369738562250000], [74955321, 6464320801000000], [76233066, 8318352025000000], [79046360, 8636077830250000], [79589783, 6503277320410000], [80456104, 8636077830250000], [83597345, 7311087924010000], [86369945, 7799719388640400], [89718065, 8375196559210000], [92879473, 8636077830250000], [95812710, 13558506481000000], [96569145, 10918017994062400]] Добавлено через 2 минуты введи 108
0
|
0 / 0 / 0
Регистрация: 14.10.2020
Сообщений: 10
|
|
04.11.2020, 13:08 [ТС] | 10 |
0
|
8581 / 4410 / 1852
Регистрация: 27.03.2020
Сообщений: 7,226
|
||||||
04.11.2020, 13:26 | 11 | |||||
zm127, тернарный оператор
А условие - если делители числа равны, то в расчетах считается только один. Замена этому фрагменту:
В некоторых задачах используется - все полные квадраты имеют нечетное количество делителей
1
|
04.11.2020, 13:26 | |
04.11.2020, 13:26 | |
Помогаю со студенческими работами здесь
11
Оптимизация скорости кода Оптимизация кода | requests Python. Оптимизация кода Оптимизация кода по времени Оптимизация небольшого кода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |