3. Бройни системи. Прости и съвършени числа

** Бройни системи (eng) [1.1.6]
** Двоична бройна система (eng) [1.1.6]
** Прости числа (eng) [1.1.3]
** Мерсенови (eng) и съвършени числа (eng) [1.1.4]

** Пример за задача за тренинг

Задача 0b. Да се напише програма за превръщане на естествено число от десетична в двоична бройна система и обратно.

Вход:
Задава се редица от двойки числа - първото число е основата на бройната система, а второто - числото за превръщане (по-малко от 104).

Изход:

За всяка двойка числа от входа се извежда двойка числа (на отделен ред) - отново първото число е основата на бройната система, а второто - превърнатото число.

Пример:
10 8
2 1000
2 1

Решение на примера:
2 1000
10 8
10 1

Пример за проверка (0a.inp)
Изход: (0a.out)
10 8
2 1000
2 1
2 111111
10 999
2 1111100111
2 1000
10 8
10 1
10 63
2 1111100111
10 999

Програма:

// f12345_0a.cpp
#include <iostream>
#include <string>
using namespace std;

string ten2two(int n)
{
       string m;
       while (n >= 1)
       {
             m = static_cast<char>((n%2) + '0') + m;
             n /=2;
       }
       return m;
}

int two2ten(string s)
{
    int m = 0;
    for (int i = 0; i < s.length(); i++) m = 2*m + (s[i] - '0');
    return m;
}

int main()
{
    int k, n;
    string s;
    while (cin >> k)
    {     if (k==2) cin >> s; else cin >> n;
//          cout << k << " " << s << endl;
          if (k==10) cout << 2 << " " << ten2two(n);
          else cout << 10 << " " << two2ten(s);
          cout << endl;
    }
    return 0;
}

Скрипт за проверката:
g++ f$2_$1.cpp
./a.out < $1.inp
rm a.out