Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (16)

Наибольший вклад в теги

Все теги (82)

Лучшие ответы пользователя

Все ответы (296)
  • Для чего программисту математика?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Если не будете изучать математику - она и не пригодится. Если будете - пригодится много где, от анализа ДНК и расчёта газовых турбин до компьютерного зрения и игры на бирже. В любом случае будете брать задачи по своим силам.
    И если с математикой в вузе проблем не было, то повторять её специально, "чтоб было", незачем. Вы её уже знаете. И когда решите, что какая-то тема нужна для конкретной задачи, спокойно повторите именно её. Если эта тема встретится несколько раз, то и повторять её будет не надо - она уже будет в голове.
    Ответ написан
    Комментировать
  • Алгоритм подсчета количества чисел в промежутке от А до B, сумма цифр которых четна?

    Mrrl
    @Mrrl
    Заводчик кардиганов

    На каждом отрезке от 10*n до 10*n+9 таких чисел ровно 5. Поэтому нам достаточно посчитать число таких полных отрезков, и обработать краевые отрезки. Пусть sumdig(n) - функуция, которая выдаёт остаток от деления суммы цифр n на 2. Тогда: int s0=(B/10-A/10-1)*5; int s1=(10+sumdig(A/10)-A%10)/2; int s2=(2+B%10-sumdig(B/10))/2; return s0+s1+s2;

    Ответ написан
    Комментировать
  • Что такое вселенная?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Вселенная — четырехмерный (как минимум) объект, обладающий метрикой пространства-времени.
    Большой взрыв — самая ранняя по времени точка Вселенной. «До него» ничего и нигде существовать не могло, потому более ранних точек пространства-времени не существует.
    Вероятно, Вселенная бесконечна и «плоская», т.е. её геометрия евклидова — с хорошей точностью. Она более-менее однородно заполнена материей (в масштабах метагалактик, т.е. сотен мегапарсеков), и её масса бесконечна.
    Вложено ли пространство-время Вселенной в какое-нибудь пространство большей размерности — неизвестно. Есть теория «мембран», которая предполагает, что да. Но лучше считать, что нет(с).
    Говорить о «пространстве вокруг Вселенной» нельзя — она заполняет всё пространство. Расширение идёт не за счет движения — просто увеличивается расстояние между точками (обычно приводят пример надувающегося воздушного шарика, но надо учесть, что кроме поверхности этого шарика ничего нет — а все точки этой поверхности неподвижны). Так что вопрос «в какую сторону расширяется» смысла тоже не имеет. Просто расширяется.
    Другие перемещения есть. Например, местная группа галактик движется относительно реликтового излучения со скоростью 300 (или 600?) км/сек. Существует ли «более инертная» система отсчета, чем реликтовое излучение — пока неизвестно.
    В своём пространстве-времени Вселенная одна, и столкнуться ей не с кем. Другие Вселенные с нашей информационно не связаны. «Белых дыр», которые могли бы служить «выходами» порталов между Вселенными, пока не обнаружено, а что находится по ту сторону чёрных дыр — тоже неизвестно. Известно только, что оно в бесконечно далеком (по нашим часам) будущем.
    В теории мембран Вселенные столкнуться могут. Возможно, в результате таких столкновений и происходят события, видимые как «большой взрыв». Но это надо изучать подробнее.
    Ответ написан
    2 комментария
  • Почему у int и float разный диапазон?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Потому что значения int на всём промежутке идут равномерно, с шагом 1, то у float шаг между соседними значениями меняется: в окрестности единицы он примерно 10^(-7), а в окрестности миллиарда - около 100. Приблизительно можно сказать, что равномерно идёт логарифм float. За счёт этого (выигрыш в точности на малых числах, но заметный проигрыш на больших) они и расширили диапазон.
    Играясь с соотношением числа бит на мантиссу и порядок, можно менять диапазон на точность, и наоборот.
    Ответ написан
    Комментировать
  • Как найти из 4 чисел, где 3 равные между собой одно не равное, за один раз?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Надо уточнить - что считать, операции сравнения, или условные операторы. Считать написанные операции/операторы, или выполняющиеся.
    Возможные варианты решения:
    return a==b ? (a==c ? d : c) : (a==c ? b : a);
    int X[4];
    return X[(X[0]==X[2])+2*(X[0]==X[1])];

    int f(int p,int q,int r){
      return p==r ? q : p;
    }
    int g(int a,int b,int c,int d){
      return a==b ? f(c,d,a) : f(a,b,c);
    }

    int x=a^b,y=a^c;
    x=(x|-x)>>31; y=(y|-y)>>31;
    return ((a^b^c^d)&x&y)^((b^d)&x)^((c^d)&y)^d;

    (в последнем вообще нет сравнений и условных операторов).
    Ответ написан
    Комментировать