![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 05.12.2014
Сообщений: 12
|
![]()
Помогите оптимизировать код
Код:
задача... Найти количество правильных сложений чисел из отрезков [a;b] и [c;d] которые равны числу n. то есть если i принадлежит отрезку [a;b] и j отрезку [c;d] то если i+j==n то k++; и вывсети количество таких правильных сложений. то есть вывести k Последний раз редактировалось Stilet; 12.01.2016 в 09:11. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]()
1. для каждого числа i из [a;b] существует РОВНО ОДНО число дающее в сумме с ним число n. { = n-i }
2. оно может попасть (или НЕ попасть) в другой отрезок [c,d] 3. осталось "понять" КАК проверить что оно ПРИНАДЛЕЖИТ нашему отрезку { с<=n-i<=d }
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 12.01.2016 в 09:16. |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
так зачем тут два цикла?! В одном проверяйте, находится ли n-i в нужном диапазоне!
примерно так: Код:
p.s. а вообще, думаю, что тут вообще без циклов обойтись можно, если в коде сделать анализ взаимного расположения границ отрезков. |
![]() |
![]() |
![]() |
#4 | |
Пользователь
Регистрация: 05.12.2014
Сообщений: 12
|
![]()
спасибо большое!
а если еще оптимизировать? получиться как нибудь? Можно еще больше ускорить программу? Цитата:
Последний раз редактировалось Stilet; 12.01.2016 в 11:15. |
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 05.12.2014
Сообщений: 12
|
![]()
ну да...что дальше?
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]()
| [a;b] ∩ [n-d;n-c] | (мощность множества)
= max(a, n-d) - min(b, n-c) НО не всегда, а только если есть пересечение (т.е. множество НЕ ПУСТОЕ) иначе =0
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 12.01.2016 в 13:55. |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
evg_m, спасибо большое!!!
я именно это и пытался утром сказать. но не смог: додумать мысль до конкретной реализации не хватило ума и времени... Оставил это себе на ужин... единственное, если я правильно понимаю, количество должно быть max(a, n-d) - min(b, n-c) +1 |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Оптимизация кода | INSIDER73 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 16.12.2014 08:23 |
Оптимизация кода | HDMI | PHP | 16 | 22.10.2012 13:06 |
Оптимизация кода | LuckyTheGreat | C# (си шарп) | 3 | 15.07.2011 00:46 |
Оптимизация кода | viscas | PHP | 3 | 31.05.2009 16:04 |
Оптимизация кода | nusik | Общие вопросы Delphi | 2 | 21.05.2009 17:55 |