Решение задачи Интересный перевод с Mccme

С пояснением   Просмотров: 55


На планете Роботов очень не любят десятичную систему счисления, поэтому они попросили Вас написать программу, которая заменяет все встречающиеся в тексте числа на эти же числа, но в двоичной системе счисления.


Код

#include <bits/stdc++.h>

using namespace std;
void solve(string t)
{
    long long n = stoi(t);
    vector<int> a;
    while(n > 1){
        a.push_back(n % 2);
        n /= 2;
    }
    if(n)
        a.push_back(n);
    for(int i = a.size() - 1; i >= 0; --i)
        cout << a[i];
}
int main()
{
    string s, t;
    getline(cin, s);
    s += ".";
    for(int i = 0; i < s.size(); ++i){
        if(s[i] >= '0' && s[i] <= '9')
            t += s[i];
        else{
            if(t.size()){
                solve(t);
                t = "";
            }
            if(i != s.size() - 1)
                cout << s[i];
        }
    }
    return 0;
}

         

Администратор Photo Автор: Администратор


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


Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться