Pull to refresh
2
0
Send message
И в России многие люди называют интернетом браузер.
Предположим ракете нужно N кг дополнительного топлива, чтобы вернуться к месту старта. Даже если плавающей платформе нужно 10 * N кг того-же керосина, то это стоит того, ибо 100 кг в ракете уже разогнаны до половины первой космической скорости, или даже больше, если говорить о центральном блоке Falcon Heavy. Конечно надо более точно считать затраты на транспортировку, осмотр/ремонт/тестирование ракеты, но речь то не об этом была. Безопасность понятно, второй пункт зависит от того, как далеко первая ступень уходит на восток во время запуска? Я считал что ракета после 10-20 км пути вверх, начинает разгоняться на восток, я не прав?
Я считал, что все три блока будут садиться в океан. Во-первых это безопаснее. Во-вторых не очень понятно как можно вернуться к месту старта не затратив при этом дополнительного топлива.
Забавно было бы слушать админов, которые закачивают гелий :)
В каком кресле вы сидите до последнего? Это когда посадка осуществляется по «рукавам»? В России в большинстве случаев людей сажают в автобус или два и везут по летному полю до самолёта, там все вываливаются из автобусов на мороз и беспорядочной толпой стоят у трапа, хотят побыстрее попасть в самолёт.
int Parse(int L, int R, vi* ops = 0) {
    vi* opsV = ops;
    vi v;
    if (!opsV || opsV->empty()) {
        opsV = &v;
        for (int i = L; i < R; ++i) {
            if (s[i] == '(') {
                i = next[i];
                continue;
            }
            if (s[i] == ')')
                ASS(0);
            if (opsV->empty() || op[s[opsV->back()]] <= op[s[i]]) {
                if (!opsV->empty() && op[s[opsV->back()]] < op[s[i]])
                    opsV->clear();
                opsV->push_back(i);
            }
        }
    }
    if (!opsV->empty()) {
        int pos = opsV->back();
        opsV->pop_back();
        switch (s[pos]) {
            case '+': return Parse(L, pos, opsV) + Parse(pos + 1, R);
            case '-': return Parse(L, pos, opsV) - Parse(pos + 1, R);
            case '*': return Parse(L, pos, opsV) * Parse(pos + 1, R);
            case '/': return Parse(L, pos, opsV) / Parse(pos + 1, R);
        }
    }
    if (s[L] == '(')
        return Parse(L + 1, R - 1);
    if (s[L] == '-')
        return -Parse(L + 1, R);
    int x = 0;
    ASS(s[L] >= '0' && s[L] <= '9');
    while (s[L] >= '0' && s[L] <= '9') {
        x = x * 10 + s[L] - '0';
        ++L;
    }
    return x;
}

Цель была показать, что это можно быстро написать. Речь о разговоре в курилке.
Допустимые символы имеют неотрицательные коды, никаких обращений мимо. Писалось в курилке просто чтобы показать что это возможно написать быстро. Унарный минус небыло цели обрабатывать.
#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <stdlib.h>
#include <ctime>
#include <set>
#include <map>
#include <queue>
#include <string>
#include <math.h>
#include <queue>
#include <memory.h>
#include <iostream>
#include <fstream>
#include <stack>
#include <complex>
#include <list>

using namespace std;

void ASS(bool bb)
{
    if (!bb)
    {
        ++*(int*)0;
    }
}

#define FOR(i, x) for (int i = 0; i < (int)(x); ++i)
#define CL(x) memset(x, 0, sizeof(x))
#define CLX(x, y) memset(x, y, sizeof(x))

#pragma comment(linker, "/STACK:106777216") 

typedef vector<int> vi;

typedef long long LL;

string s;
vi next;

int op[256];

int Parse(int L, int R) {
    int c = 0;
    int pos = 0;
    int pr = -1;
    for (int i = L; i < R; ++i) {
        if (s[i] == '(') {
            i = next[i];
            continue;
        }
        if (s[i] == ')')
            ASS(0);

        if (c == 0 && i > L && pr <= op[s[i]]) {
            pr = op[s[i]];
            pos = i;
        }
    }
    if (pr > 0) {
        switch (s[pos]) {
            case '+': return Parse(L, pos) + Parse(pos + 1, R);
            case '-': return Parse(L, pos) - Parse(pos + 1, R);
            case '*': return Parse(L, pos) * Parse(pos + 1, R);
            case '/': return Parse(L, pos) / Parse(pos + 1, R);
        }
    }
    if (s[L] == '(')
        return Parse(L + 1, R - 1);
    if (s[L] == '-')
        return -Parse(L + 1, R);
    int x = 0;
    ASS(s[L] >= '0' && s[L] <= '9');
    while (s[L] >= '0' && s[L] <= '9') {
        x = x * 10 + s[L] - '0';
        ++L;
    }
    return x;
}

int main() {
    op['+'] = 2;
    op['-'] = 2;
    op['*'] = 1;
    op['/'] = 1;
    string t;
    while (cin >> t)
        s += t;

    int last = (int)s.size();
    next.resize(s.size(), 0);

    vi v;
    for (int i = last - 1; i >= 0; --i) {
        if (s[i] == ')')
            v.push_back(i);
        if (s[i] == '(') {
            ASS(v.size() > 0);
            next[i] = v.back();
            v.pop_back();
        }
    }
    cout << Parse(0, s.size());

    return 0;
}
Мне религия не позволяет платить за многое, включая просмотр фильма. Где-то недалеко стоит плата двум конторам за пользование интернетом. Провайдеру заплати, за канал заплати. Думаю Бобби Хендерсон не одобрил бы, и я не одобряю.
В опросе не хватает пункта 4. «Да, но платить за канал бы не стал». Это можно устроить какими-нибудь «теневыми» сетями типа Tor.
Господа, а вы поняли чем 1Password лучше чем LastPass? Это все равно что написать все свои пароли и отдать на хранение третьему лицу, которое пообещает не разворачивать бумажку. Если уж ты пишешь их, так хоть бумажку сам храни.
HR менеджер Дойч Банка пригласил меня на собеседование, сказав что это будет техническое собеседование, а на деле спрашивал какие-то общие вопросы и никакого технического специалиста и близко небыло. Я указал ему на невежливость с его стороны, на что он ответил что до трудоустройства может пройти 5-7 собеседований. Конечно я отказался от дальнейшей траты времени. Я только на дорогу в общей сложности день потрачу. Честно говоря мне сложно представить хорошего программиста, который готов на такие пытки. Только если он по каким то причинам хочет работать именно в этой компании. В остальных случаях они отметают большую часть хороших специалистов, которым жалко своего времени.
Спасибо кэп. Речь шла о константе n (log n) ^ 2 лучше O(n^2) или нет. Замечу еще что умножение с быстрым преобразованием Фурье помимо прочего хорошо распараллеливается.
полагаю для n порядка 10^13 это значительно лучше квадрата.
Сомневаюсь в ценности формулы для распределенных вычислений большого количества цифр. Время вычисления n-го знака O(n), то есть на вычисление n цифр потратим O(n^2) времени, думаю есть более эффективные методы. Или нет?
2

Information

Rating
Does not participate
Registered
Activity