(Джерело: http://www.olymp.vinnica.ua/index_ua.php?lng=ua&cid=103)
Задача. Дано число Ch в десятковій системі числення. Написати програму що переводить дане число в систему числення з основою m.
Технічні умови. Програма читає з клавіатури в першому рядку число m (2≤m≤16), в другому - число Ch (0≤Ch≤2+109) в десятковій системі. Програма виводить на екран відповідь в вигляді текстового рядка.
Введення:
16
1024
Виведення:
400
Розв'язання
Задача обернена до попередньої (Nhex).
Щоб перевести число 1024 з 10-вої системи числення в 16-ву потрібно послідовно ділити 1024 та отримані частки на 16 доти, поки частка не стане меншою за 16. Остання частка і буде першою цифрою отриманого числа, залишки записані в зворотньому порядку - рештою чисел (перший залишок - остання цифра).
Переведемо:
3-тя цифра - 1024:16 = 64*16 + 0;
2-га цифра - 64:16 = 4*16 + 0;
1-ша цифра - 4<16, тому ділення завершено і 102410 = 40016.
Запишемо алгоритми мовами програмування.
Free Pascal:
Var M, Z : 2..16;
Ch : 0..2000000000;
N : String[31];
Ch : 0..2000000000;
N : String[31];
Begin
ReadLn (M);
Read (Ch);
N := '';
Repeat
Z := Ch mod M;
Ch := Ch div M;
If Z < 10
Then N := Chr (48+Z) + N
Else N := Chr (55+Z) + N;
Until Ch = 0;
Write(N);
End.
C++:
#include <iostream>
#include <string.h>
using namespace std;
#include <string.h>
using namespace std;
int main()
{
int m, ch, z;
cin >> m >> ch;
string n="";
do
{
z=ch%m, ch/=m;
char c=(z<10) ? (z+48) : (z+55);
n=c+n;
}
while (ch!=0);
cout << n;
}
Немає коментарів:
Дописати коментар