Сохранен 108
https://2ch.hk/b/res/165489990.html
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Аноним 22/11/17 Срд 01:13:12 #1 №165489990 
035149232123166121186247162160124048164007206134.png
Анон, как мы знаем, двач полон программистов 300кк/наносек.
Помогите решить задачу.
Нужно вычислить значение суммы интегралов Френеля (два интеграла, от sin(x^2) и cos(x^2) соответственно) на отрезке от нуля до входного Х.
Точность - до пятого знака включительно. Ограничения по времени - анальные.
Попробовал метод бесконечного количества бесконечно малых прямоугольников - не укладываюсь во время: нужная точность достигается при 200 млн прямоугольников, а за заданное время успеваю обработать только около 16 млн.
Вот код:

double x;
cin >> x;
double cap = 200Math.pow(10,6);
double length = x/cap;
double sum = 0.0;
double i = length/2;
while (i<x) {
double pow = i
i;
sum = sum + length (Math.sin(pow)+Math.cos(pow));
i = i + length;
}
write((Math.ceil(sum
Math.pow(10, 5)) / Math.pow(10, 5))+"");

Знаю, что хуйня, обоссывайте, но помогите.
Аноним 22/11/17 Срд 01:14:01 #2 №165490045 
Сука макаба сожрала звёздочки умножения
Аноним 22/11/17 Срд 01:14:23 #3 №165490067 
Ну лан там понятно что где
Аноним 22/11/17 Срд 01:14:46 #4 №165490086 
Бамп
Аноним 22/11/17 Срд 01:15:05 #5 №165490095 
Бамп
Аноним 22/11/17 Срд 01:15:22 #6 №165490111 
Бамп
Аноним 22/11/17 Срд 01:15:44 #7 №165490137 
Бамп
Аноним 22/11/17 Срд 01:16:17 #8 №165490163 
Бамп
Аноним 22/11/17 Срд 01:16:42 #9 №165490188 
Бамп
Аноним 22/11/17 Срд 01:17:12 #10 №165490211 
Бамп
Аноним 22/11/17 Срд 01:17:31 #11 №165490232 
Бамп
Аноним 22/11/17 Срд 01:17:47 #12 №165490250 
Бамп
Аноним 22/11/17 Срд 01:18:29 #13 №165490281 
Бамп
Аноним 22/11/17 Срд 01:18:50 #14 №165490303 
Бамп
Аноним 22/11/17 Срд 01:19:09 #15 №165490317 
Бамп
Аноним 22/11/17 Срд 01:19:25 #16 №165490334 
Бамп
Аноним 22/11/17 Срд 01:19:45 #17 №165490352 
Бамп
Аноним 22/11/17 Срд 01:20:04 #18 №165490364 
У тебя код можно на порядок сократить, скорее всего и уложишься по времени
Аноним 22/11/17 Срд 01:20:09 #19 №165490368 
Бамп
Аноним 22/11/17 Срд 01:20:26 #20 №165490386 
>>165489990 (OP)
1) Пиши на си
2) Используй AVX/AVX2

Плюс, можешь заранее загенерить и сохранить таблицу синусов-косинусов, или придумать более эффективный способ их расчёта, чем в стандартной либе.

Но в первую очередь - AVX2.
Аноним 22/11/17 Срд 01:20:31 #21 №165490390 
Бамп
Аноним 22/11/17 Срд 01:20:53 #22 №165490407 
>>165490364
Как?
Аноним 22/11/17 Срд 01:21:56 #23 №165490467 
Иу9?
Аноним 22/11/17 Срд 01:23:13 #24 №165490516 
>>165490386
Почему? Почему? Как?
Аноним 22/11/17 Срд 01:23:42 #25 №165490540 
У этой функции разве нет периода?
Округли Х до ближайшего pin
Посчитай 2 интеграла от 0 до pi и от 0 до Х-2pi
n
Аноним 22/11/17 Срд 01:25:01 #26 №165490612 
>>165490467
Ноуп
Заборостроительная шарага имени Ленина города Усть-Перепиздюйска, второй курс
Аноним 22/11/17 Срд 01:25:44 #27 №165490649 
>>165490612
Хех, тоже неплохо
Аноним 22/11/17 Срд 01:25:49 #28 №165490653 
>>165489990 (OP)
Да, все программисты именно этим и занимаются.
Аноним 22/11/17 Срд 01:25:54 #29 №165490661 
Плюс стоит описать измерение времени. Что измеряется? Системное время, кол-во циклов*частоту? Большинство таких оценок - полное гавно, ибо планировщик успеет сто раз переключить твои задачи, и в эти измерения времени вкрадутся чужие расходы.
В идеале мерять надо на выделенном ядре, где шедулер не ебет таски, kernel скомпилировать с NO_HZ_FULL и добавить на нужное ядро эту опцию + isolcpu. И запускать свой таск с SHED_FIFO и максимальной rt-шной привелегией.
Аноним 22/11/17 Срд 01:28:50 #30 №165490787 
>>165490540
Нет у неё периода. Попроси гугл построить её график, увидишь.
Аноним 22/11/17 Срд 01:30:29 #31 №165490882 
>>165490661
К сожалению там электронная система тестов по типу "чёрный ящик": просто кидаешь прогу, а оно тебе говорит, окей или нет.
Аноним 22/11/17 Срд 01:30:43 #32 №165490893 
>>165490516
Почитай хоть пару строк про avx и simd вообще, дебил малолетний.

В современных процах есть специальные регистры, длинной например 256 бит, куда помещается например 8 32-битных интов или 4 дабла и много других вариантов, вплоть до 32 байт. Для работы с этими регистрами есть специальный набор инструкций, современные называются AVX/AVX2/AVX-512 (это уже на совсем современных, где есть регистры на 512 бит). Эти инструкции позволяют производить одновременные операции над числами в векторном регистре за одну инструкцию.
Для удобства для этих инструкций определены интринсики, в <immintrin.h>, можно писать внутри си/си++ программ.
Аноним 22/11/17 Срд 01:30:48 #33 №165490895 
>>165489990 (OP)
Пиши сразу входные и выходные значения.
Аноним 22/11/17 Срд 01:32:05 #34 №165490954 
>>165490893
Делил малолетний - это ты, а писать надо по обычному, а к этой хуйне сводить - уже задача компилятора.
Аноним 22/11/17 Срд 01:35:51 #35 №165491117 
>>165490895
Вход: х не превышающий 1500
Выход: значение интеграла, для х>1300 примерно 1.25278

Ограничение по времени: 2,5 сек
Аноним 22/11/17 Срд 01:38:42 #36 №165491247 
>>165490954
Если ты пишешь код не для rt-систем - то пожалуйста, вставляй флаги и жди, что компилятор что-то сделает за тебя.
Но компилятор векторизует только довольно примитивные случаи, и зачастую делает это криво и неполноценно. Программист зачастую умней компилятора и способен написать крайне эффективный код на avx2, который компилятору не повторить из-за сложного алгоритма.
Аноним 22/11/17 Срд 01:39:35 #37 №165491288 
ОП, СУКА ЛЕНИВАЯ
https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D0%BB%D1%8B_%D0%A4%D1%80%D0%B5%D0%BD%D0%B5%D0%BB%D1%8F
Аноним 22/11/17 Срд 01:40:34 #38 №165491334 
>>165491117
2.5 секунды - это дохуллион времени.
Аноним 22/11/17 Срд 01:41:56 #39 №165491395 
>>165491288
Вот кстати страно что ОП про ряды не подумал, второй курс как-никак, математики видимо совсем не было.
Аноним 22/11/17 Срд 01:41:57 #40 №165491397 
>>165491288
Не пизди. Я эту статью прочитал, принял к сведению, попробовал реализовать методом разложения в ряд, получилось ещё хуже. Иди на хуй.
Оп.
Аноним 22/11/17 Срд 01:42:37 #41 №165491425 
>>165491395
>>165491397
Аноним 22/11/17 Срд 01:43:34 #42 №165491462 
>>165491334
Но и сделать нужно 200 млн итераций
Аноним 22/11/17 Срд 01:43:53 #43 №165491476 
>>165491397
НЕ ПИЗДИ, НЕ МОГЛО ХУЖЕ ПОЛУЧИТЬСЯ
там скорость сходимости слишком большая
Аноним 22/11/17 Срд 01:44:37 #44 №165491511 
>>165491397
И сколько элементов ряда суммировал?
Аноним 22/11/17 Срд 01:44:58 #45 №165491525 
>>165491476
Ну вот получилось.
Аноним 22/11/17 Срд 01:45:32 #46 №165491549 
>>165491397
Что то мне подсказывает, что у тебя там пиздец ошибка накапливаться будет если в лоб.

Впрочем, поздно ты тред создал, я уже спать укатился, так что подрочиться с этой херней власть могу только завтра (то есть уже сегодня) вечером
Аноним 22/11/17 Срд 01:45:35 #47 №165491554 
tumblrnlwfczPaBX1tcixc9o8500.jpg
>>165489990 (OP)
Пошли вы нахуй! Я уже брался помогать одному гондону говорил даже заплатить, а в итоге слился!
Аноним 22/11/17 Срд 01:45:53 #48 №165491572 
А, НЕТ. ТАМ ЖЕ ПРИ МАЛЫХ СТЕПЕНЯХ ДЛЯ Х=1000 ПИЗДА
Аноним 22/11/17 Срд 01:50:56 #49 №165491775 
А, НЕТ. ВСЕ ВЕРНО, ОП - ПИДОР.
ДЛЯ ВСЕХ N>15 ЮЗАЙ АСИПТОТИКИ
ДЛЯ ВСЕХ N МЕНЬШЕ РАЗЛОЖЕНИЕ В РЯД
Аноним 22/11/17 Срд 01:52:56 #50 №165491869 
>>165491775
КОКОЙ ЖЕ Я ГЕНИЙ
Аноним 22/11/17 Срд 01:53:09 #51 №165491879 
>>165491288
> и {\displaystyle C(x)} — нечётные функции {\displaystyle x}.Асимптотики интегралов Френеля при {\displaystyle x\to \infty } даются формулами
Оно?
Аноним 22/11/17 Срд 01:53:52 #52 №165491903 
>>165491879
ДА
Аноним 22/11/17 Срд 01:55:06 #53 №165491952 
>>165491288
>%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D0%BB%D1%8B_%D0%A4%D1%80%D0%B5%D0%BD%D0%B5%D0%BB%D1%8F
бляяяяяяяяяяяяяяяяяяяяяяяя ну ты и петух
Аноним 22/11/17 Срд 01:56:10 #54 №165492001 
>>165489990 (OP)
А нахуй тебе прямоугольники даун? Юзай метод трапеций хотя бы.
Аноним 22/11/17 Срд 01:56:22 #55 №165492009 
>>165489990 (OP)
Рунгекутой делай.
Аноним 22/11/17 Срд 01:57:12 #56 №165492044 
>>165491775
Что тут такое N?

мимо тупой
Аноним 22/11/17 Срд 01:57:57 #57 №165492066 
>>165492044
ну Х, всм, а не N
Аноним 22/11/17 Срд 01:58:41 #58 №165492088 
>>165492001
Даун, трапеции сводятся к тем же прямоугольникам
Аноним 22/11/17 Срд 02:00:05 #59 №165492155 
>>165492088
Только точность побольше. А соответсвенно делить можно будет на меньшее количество отрезков.
Аноним 22/11/17 Срд 02:01:02 #60 №165492193 
>>165492088
У рунге-куты или трапециями точность значительно выше, чем у прямоугольников при том же шаге. Там где прямоугольниками надо 200млн шагов, рунке-кута или трапеции за сотню тысяч или даже десятков сделают.
Аноним 22/11/17 Срд 02:02:26 #61 №165492247 
>>165489990 (OP)
Кстати да, если у опа X окажется дохуя большим, то даже 20 млн прямоугольников ему не хватит.
Аноним 22/11/17 Срд 02:05:05 #62 №165492358 
Аноны, а вы можете дать оценку сложности алгоритмов с прямоугольниками, трапециями, параболами, рунгекуты, разложения в ряд и асимптоматики в зависимости от x и в зависимости от требуемой точности?
Аноним 22/11/17 Срд 02:06:14 #63 №165492400 
>>165492358
Хуле тут давать. Линейная
Аноним 22/11/17 Срд 02:07:57 #64 №165492471 
>>165492358
В смысле сложность? Долбишь по клавишам, хуяришь код.
Аноним 22/11/17 Срд 02:08:20 #65 №165492489 
>>165492400
Бля, перефразирую вопрос . Относительную сложность.
Т.е.насколько трапеции быстрее прямоугольников и так далее?
Аноним 22/11/17 Срд 02:08:48 #66 №165492514 
>>165492471
О, пхпшники подъехали.
Аноним 22/11/17 Срд 02:13:53 #67 №165492710 
Бамп
Аноним 22/11/17 Срд 02:15:49 #68 №165492789 
Бамп
Аноним 22/11/17 Срд 02:16:09 #69 №165492804 
Бамп
Аноним 22/11/17 Срд 02:17:02 #70 №165492831 
Бамп
Аноним 22/11/17 Срд 02:18:08 #71 №165492876 
Бамп
Аноним 22/11/17 Срд 02:18:44 #72 №165492895 
Бамп
Аноним 22/11/17 Срд 02:19:02 #73 №165492910 
Бамп
Аноним 22/11/17 Срд 02:19:22 #74 №165492920 
Бамп
Аноним 22/11/17 Срд 02:24:56 #75 №165493157 
>>165492489
Бамп вопросу
Аноним 22/11/17 Срд 02:28:46 #76 №165493319 
О, такой тред. Анон, научи меня оценивать погрешность плз
Аноним 22/11/17 Срд 02:30:20 #77 №165493383 
Бамп
Аноним 22/11/17 Срд 02:30:43 #78 №165493401 
Бамп
Аноним 22/11/17 Срд 02:31:16 #79 №165493425 
Бамп
Аноним 22/11/17 Срд 02:32:12 #80 №165493452 
Бамп
Аноним 22/11/17 Срд 02:33:30 #81 №165493503 
Бамп
Аноним 22/11/17 Срд 02:33:43 #82 №165493511 
>>165490653
Да, все. Кто не занимается обычные веб-макаки или ещё хуже, коме цэпэпэ нихуя не знают.
Аноним 22/11/17 Срд 02:33:55 #83 №165493519 
Бамп
Аноним 22/11/17 Срд 02:35:34 #84 №165493589 
Бамп
Аноним 22/11/17 Срд 02:35:58 #85 №165493606 
Бамп
Аноним 22/11/17 Срд 02:37:47 #86 №165493679 
>>165489990 (OP)
> за заданное время успеваю обработать только около 16 млн.
Неси этот код. На все претензии отвечай, что у тебя всё работает просто они лохи и дураки пидары и гамасеки а ещё суки ебаные, на доисторическом дерьме запускают код.
Аноним 22/11/17 Срд 02:38:02 #87 №165493688 
>>165490893
Ебаться-сраться! Так вот кто хуярит тормозной и засранный быдлокод!
Аноним 22/11/17 Срд 02:41:29 #88 №165493806 
>>165493688
Анон, если ты шаришь, поясни за ту хуйню которую тот анон, на которого ты отвечаешь, несёт. Я нихуя не понял. Это торт или хуита? И почему?
Только объяснение хорошо бы уровня для дебилов
Аноним 22/11/17 Срд 02:46:14 #89 №165493957 
>>165489990 (OP)
Numerical recipes in C книжка. Там описаны методы поумнее
Аноним 22/11/17 Срд 02:48:11 #90 №165494020 
>>165493957
Спасибо, анон. Огромное!
Аноним 22/11/17 Срд 02:51:35 #91 №165494113 
>>165494020
Семестр по ней лабы делал, кека
Аноним 22/11/17 Срд 02:54:01 #92 №165494178 
>>165493806
Тот ебалай предлагает тебе заебенить код с командами ассемблера. На первый взгляд это кажется круто, но явно не в твоём случае т.к. это будет охуительный костыль. Принесёшь ты этот код на другую машину и начнётся веселуха. Хуякс, а проц на целевой машине эти команды не поддерживает и вообще там стоит MIPS. Там один гражданин ответил уже, что всё это делается средствами компилятора.
Аноним 22/11/17 Срд 03:01:56 #93 №165494385 
>>165494178
То есть компилятор сам за меня сделает подробную оптимизацию?
Аноним 22/11/17 Срд 03:08:20 #94 №165494578 
>>165494385
Да. В ассемблер CISC-процессоров не стоит лезть ручками. В современных реалиях это не нужно.
Аноним 22/11/17 Срд 03:10:11 #95 №165494644 
Так, аноны. А почему вы уверены, что асимптотическая формула даст мне необходимую точность?
Аноним 22/11/17 Срд 03:26:02 #96 №165495040 
Бамп
Аноним 22/11/17 Срд 04:23:36 #97 №165496426 
Бамп
Аноним 22/11/17 Срд 04:23:59 #98 №165496436 
Бамп
Аноним 22/11/17 Срд 04:24:20 #99 №165496447 
Бамп
Аноним 22/11/17 Срд 04:32:39 #100 №165496671 
Параллелизовать ещё не советовали?
Аноним 22/11/17 Срд 05:06:58 #101 №165497373 
>>165496671
Нет.
Аноним 22/11/17 Срд 05:47:09 #102 №165498181 
Бамп
Аноним 22/11/17 Срд 05:47:30 #103 №165498188 
Бамп
Аноним 22/11/17 Срд 05:47:48 #104 №165498195 
Бамп
Аноним 22/11/17 Срд 05:48:11 #105 №165498204 
Бамп
Аноним 22/11/17 Срд 05:48:40 #106 №165498214 
Бамп
Аноним 22/11/17 Срд 05:49:49 #107 №165498242 
Бамп
Аноним 22/11/17 Срд 05:50:59 #108 №165498263 
Бамп
comments powered by Disqus

Отзывы и предложения