powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Задачка из http://projecteuler.net
9 сообщений из 9, страница 1 из 1
Задачка из http://projecteuler.net
    #37672838
IcyCool
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот начал решать задачки с вышеуказанного сайта.
К последней задачке на знаю с какой стороны подступиться. Пините пожалуйста в правильном направлении (решение не прошу)

Задачка звучит так:
R(M,N) - функция определенная как количество точек (х,у) таких, что M<x,y<=N и floor(y^2/x^2) является нечетным.
для проверки R(0, 100) = 3019 и R(100, 10000) = 29750422.

Найти R(2*10^6 , 10^9)

Перебор нереален,
немного смог сократить перебор, посчитав количество чисел в последовательности, выдающей одно значение floor() как
[sqrt(n+1)-sqrt(n)]*x для n=1,3,5,
Но даже с этим у меня с 2*10^6 до 4*10^6 считал несколько часов.
Для данный на проверку (0-100 и 100-10000) выполнил, выдал в файл результаты и в экселе пытался анализировать - не помогло.

Тките, пожалуйста, где почитать!
...
Рейтинг: 0 / 0
Задачка из http://projecteuler.net
    #37673324
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IcyCool,
правильно списывай условия
...
Рейтинг: 0 / 0
Задачка из http://projecteuler.net
    #37673509
IcyCool
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

Перевод, конечно, вольный, но смысл сохранен.
В чем я не прав?
...
Рейтинг: 0 / 0
Задачка из http://projecteuler.net
    #37673578
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IcyCool,

1. точка (x,y) с целочисленными координатами ,
иначе наличие floor((y*y)/(x*x)) вызывает вопрос.

2. M<x<=N, M<y<=N
понятно, что на количество нечетных не влияет,
но ближе к оригиналу.

Относительно решения.
Хитрость задачи в том, чтобы найти решение без вложенного цикла или как можно больше сократить "вложение".
Например, можно попробовать обыграть то, что дельта по y при росте x только увеличивается.
...
Рейтинг: 0 / 0
Задачка из http://projecteuler.net
    #37673611
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может быть такое, что M<0, N>=0 ?
...
Рейтинг: 0 / 0
Задачка из http://projecteuler.net
    #37673635
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,
в условии о знаке чисел нет ни слова
...
Рейтинг: 0 / 0
Задачка из http://projecteuler.net
    #37673740
IcyCool
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
N,M положительные целые

Внутренний цикл уменьшил таким образом:

y=x+k т.к. у не меньше х. k=[0;N-x]
при этом отношение является нечетным при k=[sqrt(n+1)-sqrt(n)]*x для n=1,3,5,
хотя это привело к заметному ускорению перебора, он все равно остается нереально медленным.
еще одно наблюдение - для х=[N/sqrt(2);N] количество пар, удовлетворяющих условию равно N-x,
но и этого мало :-(
...
Рейтинг: 0 / 0
Задачка из http://projecteuler.net
    #37678985
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IcyCool,

Попробуйте вычислять по секторам, например:

Внешний цикл по номеру сектора, внутренний по оси x.

Примерное кол-во операций: sum(k=1..N^2/M^2, 1/sqrt(k)) - не могу сейчас точнее прикинуть...
...
Рейтинг: 0 / 0
Задачка из http://projecteuler.net
    #37679802
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064,

1. Наверно, будет точнее будет сказать, что можно определять положение точек относительно очередной линии раздела, пробегая вдоль нее.
2. Дополнительно использовать формулу включений-исключений.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Задачка из http://projecteuler.net
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]