програмування в С++
16_01_2012 Системи числення (повторення) |
Добавил(а) Гісь Ігор Володимирович | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
16.01.13 12:45 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Переведення чисел з однієї системи числення в іншу
Переведення чисел в різних системах числення На приклад, якщо потрібно перемножити числа 101 і 1001 в двійковій системі, то він спочатку ці числа переводить в десяткову систему таким чином : (101)2=1*22+0*21+1*20=4+0+1=5 (1001)2=1*23+0*22+0*21+1*20=8+0+0+1=9 Після чого множення чисел 5 і 9 Вася з легкістю виконує в десятковій системі числення і отримує число 45. Далі виконує переведення з десяткової системи числення в двійкову. Для цього потрібно ділити число 45 на 2 ( порядок системи числення ), запам'ятовує залишки від ділення, до тих пір поки в результаті не залишиться число 0:
Відповідь складається з одержаних залишків від ділення шляхом їх запису в зворотному порядку . Таким чином одержуємо результат : (101101)2. 1. Задача. Перевести число з будь-якої системи числення в будь-яку іншу. Протестувати самостійно 2. Задача BINARY Ім'я вхідного файлу: BINARY.DAT Ім'я вихідного файлу: BINARY.SOL Максимальний час роботи на одному тесті: 3с Талановитий учень Діма придумав цікаву гру з числами. А саме, взявши довільне ціле число, він переводить його в двійкову систему числення, отримуючи деяку послідовність з нулів та одиниць, що починається з одиниці. (Наприклад, десяткове число 1910 = 1×24+0×23+0×22+1×21+1×20 в двійковій системі запишеться як 100112). Потім вчитель починає зсовувати цифри отриманого двійкового числа по циклу (так, що остання цифра стає першою, а всі інші зсовуються на одну позицію вправо), виписуючи утворюються при цьому послідовності з нулів і одиниць у стовпчик - він помітив, що незалежно від вибору вихідного числа виходять послідовності починають з деякого моменту повторюватися. І, нарешті, учень відшукує максимальне з виписаних чисел і переводить його назад в десяткову систему числення, вважаючи це число результатом виконаних маніпуляцій. Так, для числа 19 список послідовностей буде таким: 10011 11001 11100 01110 00111 10011 ... і результатом гри буде число 1×24+1×23+1×22+0×21+0×20 = 28. Оскільки придумана гра з числами все більше займає уяву учня, відволікаючи тим самим його від навчання і підготовки до олімпіади, Вас просять написати програму, яка б допомогла Дімі отримувати результат гри без важких ручних обчислень. Вхідний файл містить одне ціле число N (0£N£32767). Ваша програма повинна вивести в вихідний файл рядок, що містить одне ціле число, рівне результату гри. Приклад
3. Задача Нулі Ім'я вхідного файлу: ZEROS.DAT Ім'я вихідного файлу: ZEROS.SOL Максимальний час роботи на одному тесті: 5с Необхідно написати програму для знаходження кількості N-значних чисел в системі числення за основою K, таких що їхній запис не буде містити двох нулів підряд. Формат вхідних даних. Єдиний рядок вхідного файлу ZEROS.DAT містить два натуральних числа N та K, 2 <= K <= 10, N + K <= 18. Формат вихідних даних. Єдиний рядок вихідного файлу ZEROS.SOL повинен містити одне натуральне число - розв'язок задачі. Приклад. ZEROS.DAT: 4 2 ZEROS.SOL: 5 |