• Как найти точки на дуге?

    wataru
    @wataru
    BlinCT, точки внутри по тем же формулам, только радиус берете меньше на ширину тика. Т.е. синус и косинус умножаются на меньшую величину
    Написано
  • Как найти точки на дуге?

    wataru
    @wataru
    BlinCT, все напутано. Вот так надо:
    auto xPoint = m_Width.value()/2 + radius * qCos((M_PI * angle) / 180.0);
    auto yPoint = m_Height.value()/2 + radius * qSin((M_PI * angle) / 180.0);


    Центр окружности - в центре прямоугольника. Делить углы надо на 180, потому что 180 градусов - это Pi радиан.
    Написано
  • Как найти точки на дуге?

    wataru
    @wataru
    BlinCT, А что за m_height и m_width? Они по логике должны быть равны m_GaugeWidthHeight/2, нет?

    А еще у вас в синусы и косинусы угол в градусах, похоже передается. А надо, наверное в радианах. Передавайте туда Pi*angle/180.0. Уточните справку на эти qSin и qCos.
    Написано
  • Как найти точки на дуге?

    wataru
    @wataru
    BlinCT, что-то не так считаете. Может, вместо радиуса берете диаметр? Давайте ваш код.
    Написано
  • Как найти точки на дуге?

    wataru
    @wataru
    BlinCT, Кажется правильно. Центр окружности - в центре квадрата 485x485. Радиус - половина. Откладываете косинусы/синусы, помноженные на этот радиус - вот и конец отрезка. Откладываете тот же косинус и синус, но с меньшим радиусом - вот и внутренний конец отрезка. Какой-то функцией графической этот отрезок рисуйте.
    Написано
  • Почему -Wconversion разрешает передачу integer literal в char параметр?

    wataru
    @wataru Куратор тега C++
    Qubc,
    Тем не менее это не очень интуитивно
    Добро пожаловать в с++. Тут много чего неинтуитивно. Еще много что выглядит интуитивно, пока не споткнешься о подводный камень.
    Написано
  • Как найти минимальное число прохождений по автомату до конечного состояния с N вероятностью?

    wataru
    @wataru Куратор тега Математика
    Нн совсем ясно условие. Надо найти такое минимальное K, что путь из K переходов по цепи посетит заданную вершину хотя бы раз с вероятностью не меньше p? Или надо за K шагов оказаться в вершине?

    А без вероятностей переходов, вообще говоря, задача не имеет смысла. Возможно там действительно равновероятные переходы. Уточняйте условие оттуда, где его взяли.
    Написано
  • Как написать функцию sin из библиотеки math.h в Си?

    wataru
    @wataru Куратор тега Математика
    pinkhead_psd,

    оригинал выдает значение в радианах

    И я пытаюсь написать ее с нуля из либы math.h


    Ну так ваша функция уже принимает в радианах. Как и оригинальная. Все одинаково, все совпадает. Она, правда, не сходится для больших значений, и вы получите не -0.988032, Но не потому что у вас не в радианах, а потому что ряд тейлора имеет границу сходимости.

    Вам надо полные обороты (2pi) повычитать из угла. Отрицательные считать как минус значение для положительного, а потом, в зависимости от квадранта нужно еще преобразовать аргумент, как pi-x, чтобы в итоге аргумент в ряде тейлора всегда был от 0 до pi/2.
    Написано
  • Как написать функцию sin из библиотеки math.h в Си?

    wataru
    @wataru Куратор тега Математика
    pinkhead_psd, т.е. вам надо отличное от стандартной функции поведение? Чтобы ваша функция получала угол в градусах? Ну тогда в самом начале функции переведите градусы в радианы (домножив аргумент на Pi/180.0).
    Написано
  • Как решать подобные задачи?

    wataru
    @wataru Куратор тега Алгоритмы
    impelix, Ну, в самом начале можно сделать любой шаг. А в x надо считать сумму всех выведенных run. Грубо говоря cout << "run " << m - x%m << "\n"; x += m - x%m;

    Так же, в случае, когда floor(x/m) != k можно сдвинуть границу не выводя никаких команд.

    Еще надо очень аккуратно со смыслом l и r. Это границы которые искомая величина может принять? тогда в случае, если вы знаете, что m < ответа, надо присваивать l = m+1;. Если вы поняли, что ответ может быть и m, то надо присваивать без 1.

    Еще аккуратно посмотрите случай l==r-1: а не зависнет ли программа? Она потом спросит про l, но может ли прийти к выводу, что ответ >= m и не сдвинуть границы?

    Edit: и да, в k надо накапливать сумму всех ответов от системы, а не последний ответ. Суммарное количество оборотов.
    Написано
  • Как решать подобные задачи?

    wataru
    @wataru Куратор тега Алгоритмы
    polak228, Да не, можно приспособить и бинарный поиск. Надо только помнить сколько вы метров уже суммарно прошли и сколько целых оборотов сделали.
    Написано
  • Как решать подобные задачи?

    wataru
    @wataru Куратор тега Алгоритмы
    Тут только проблема в том, что последующие команды run k вы выполняете не с начала круга, а уже с накопленным пробегом. Так что можно перескочить за фишиш даже сделав шаг короче длины круга.
    Написано
  • Что можно убрать чтобы оптимизировать затраты памяти?

    wataru
    @wataru Куратор тега C++
    impelix, охохо! ni <= 10^18. Вот вы столько цифр пытались запихать в массив. Конечно, оно падает по памяти, тут нужны миллионы терабайт. Да, надо складывать, как я написал в последнем комментарии: группа с группой.
    Написано
  • Посчитать многоугольник почему не работает програма?

    wataru
    @wataru Куратор тега Математика
    no-pasaran, Я отредактировал свой ответ. Перечитайте его, пожалуйста.
    Написано
  • Что можно убрать чтобы оптимизировать затраты памяти?

    wataru
    @wataru Куратор тега C++
    impelix, А дайте задачу целиком. Что там за ограничения по числам? По памяти и по времени?

    Может, надо суммировать не разворачивая вот эти вот группы. Если там дается, скажем, до миллиона групп, но в каждой может быть до миллиона чисел, то вы падаете по памяти еще во время ввода.

    Тут надо прочитать пары (цифра, количество), развернуть их списки, а потом суммировать погрупно. Если группы одинакового размера - сложили их. если нет, то откусили от более длинной групы кусок равный более короткой. Обработали. Из-за переноса можно в ответ вписать сразу несколько групп. В ответе в конце надо будет подряд идущие одинаковые группы цифр слить в одну группу. Ну и развернуть перед выводом.

    Надо порисовать на бумажке, что будет, если сложить "aa...a", "bb....b" и еще перенос (0 или 1) в правый разряд.
    Написано
  • Посчитать многоугольник почему не работает програма?

    wataru
    @wataru Куратор тега Математика
    no-pasaran,
    вы неправильно поняли вопрос
    Это потому что вы условие задачи так и не сформулировали. Надо эти ветора подвигать, чтобы сложился многоугольник? Их можно вращать или нет? Можно их расставлять в любом порядке?
    Написано
  • Что можно убрать чтобы оптимизировать затраты памяти?

    wataru
    @wataru Куратор тега C++
    Что за ошибку то выдает система? В коде виду 2 ошибки - отсутствие фигурных скобок у else, и все ту же запись за границу массива в цикле. Вы там после всех resize'ов можете получить массив b га один короче массива a. Вы там +1 к length делаете как бы для этого переноса, но цикл суммирования все равно гоните до length-1. Можно прибавлять перенос, если он не 0, тогда выхода за границу нк будет. Но испоавьте код, чтобы массивы были одинаковой длины.
    Написано
  • Что можно убрать чтобы оптимизировать затраты памяти?

    wataru
    @wataru Куратор тега C++
    impelix, или заведите отдельный вектор для ответа. Количество пар можно подсчитать перед выводом (считайте различия в массиве отдельным циклом). Цифры можно хранить в char - тоже экономия.
    Написано
  • Как построить путь из одной координаты в другую, используя промежуточные координаты из списка?

    wataru
    @wataru Куратор тега Алгоритмы
    s4q, Надо задать к этому массиву еще и список, между какими двумя центрами можно возить товары. Обычно это только между отделением и родительским ему а так же между любыми двумя отделениями верхнего уровня.

    Вы должны задать эти ограничения. По координатам их вывести невозможно, ибо границы областей/поселений нарезаны весьма произвольно. Если вы их не задаете, то ответ остается такой-же: кратчайший путь будет без промежуточных точек, по прямой.
    Написано