Заданы 2 значения натурального числа N(0<=N<=100000000), записанные в десятичной системе счисления с неизвестным основанием A(2<=A<=16).
10-11 класс
|
Написать программу на, которая определяет неизвестное основание системы счисления.
Dim N As Long, M As Long, A As Integer
Dim strN1 As String, LngN1 As Long, i As Integer
Randomize
Print "Введите число N от 0 до 1 миллиарда: ";
Input N
A = Int(Rnd (1)*14) + 2 ' Случайно выбираем основание от 2 до 16
' Зашифровываем введенное число со случайным основанием
i = 0: strN1 = ""
Do While N > 0
M = N Mod A
If M = 10 Then
strN1
= "A" &
Trim(strN1)
ElseIf M = 11 Then strN1 = "B" &
Trim(strN1)
ElseIf M = 12 Then strN1 = "C" &
Trim(strN1)
ElseIf M = 13 Then strN1 = "D" & Trim(strN1)
ElseIf M = 14 Then strN1 = "E" & Trim(strN1)
ElseIf M = 15 Then strN1 = "F" & Trim(strN1)
Else
strN1 = Trim(Str(M)) & Trim(strN1)
End If
N = Int (N / A)
i = i + 1
Loop
Print "Число N с неизвестным основанием А: " & strN1
' Зашифровали число, теперь подбираем неизвестное основание
LngN1 = 0
For A = 2 To 16
For i = 1 To Len(strN1)
M = Val (Mid (strN1,
Len(strN1)
- i + 1, 1))
If Trim (Str (M)) = "A" Then
LngN1 =
LngN1
+ 10*A^(i-1)
ElseIf Trim (Str (M)) = "B" Then LngN1
= LngN1
+ 11*A^(i-1)
ElseIf Trim (Str (M)) = "C" Then LngN1
= LngN1
+ 12*A^(i-1)
ElseIf Trim (Str (M)) = "D" Then LngN1
= LngN1
+ 13*A^(i-1)
ElseIf Trim (Str (M)) = "E" Then LngN1
= LngN1
+ 14*A^(i-1)
ElseIf Trim (Str (M)) = "F" Then LngN1
= LngN1
+ 15*A^(i-1)
Else
LngN1
=
LngN1
+ M*A^(i-1)
End If
Next i
If LngN1 = N Then Exit For
Next A
Print "Неизвестное основание А = " & A
End
Язык Python
A = 2197 # Число в 10 сс
B = "1000" # число в неизвестно сс, в данном случае 13-ная
for i in range(2, 17):
try:
if A == int(B, i): # команда int пытается прочитать строку B как число в сс i
print "Основание сс =", i
break
except:
pass
else:
print "Значения А и В не совпадают" # Если сс подобрать не вышло
Другие вопросы из категории
Читайте также
основание
№2. Укажите через запятую в порядке возрастания все основания систем счисления, в которых запись десятичного числа 53 оканчивается на 3.
№3. Укажите через запятую в порядке возрастания все числа, не превосходящие 30, запись которых в двоичной системе счисления оканчивается на «101». Числа в ответе указывайте в десятичной системе счисления.
№4. Количество единиц в двоичной записи числа 12, 25 равно…
№5. Для кодирования букв А,Б,В,Г решили использовать двухразрядные последовательные двоичные числа (от 00 до 11 соответственно). Если таким образом закодировать последовательность символов ГБАВ и перевести результат в шестнадцатеричную систему счисления, то получится…
№6. Как представляется десятичное число 13,5 в двоичной системе счисления?
№7. Как представляется десятичное число 416 в восьмеричной системе счисления?
№8. Как представляется десятичное число 523 в шестнадцатеричной системе счисления?
№9. Вычислите значение суммы 1012 + 118 + 1016. Результат представьте в виде десятичного числа.
№10. Вычислите значение разности двух чисел 1116 – 118. Результат представьте в виде десятичного числа.
разряда. 2. Сумма этих чисел, записанная в семеричной системе счисления, содержит только цифры «1». Пары чисел, отличающиеся только порядком следования чисел в паре, считаются одинаковыми. В ответе укажите целое число.
1)20
2)12
3)21
4)1010
число 12 десятичной системы счисления в двоичной системе счисления имеет вид:
1)1000
2)1011
3)0010
4)0100
5)1100
десятичную систему счисления.3. Сложить числа.4. Выполнить вычитание.5. Выполнить умножение.6. Выполнить деление.
1. а) 218(10); б) 808(10); в) 176,25(10); г) 284,25(10); д) 253,04(10)2. а) 111000100(2); б) 1011001101(2); в) 10110011,01(2); г) 1010111111,011(2); д) 1665,3(8); е) FA,7(16).3. а) 11100000(2)+1100000000(2); б) 110101101(2)+111111110(2); в) 10011011,011(2)+1110110100,01(2); г) 1041,2(8)+1141,1(8); д) 3C6,8(16)+B7,5(16).4. а) 10110010(2)-1010001(2); б) 1101000000(2)-10000000(2); в) 1100101111,1101(2)-100111000,1(2); г) 1621,44(8)-1064,5(8); д) 1AC,B(16)-BD,7(16).5. а) 1000000(2)´ 110110(2); б) 714,34(8)´ 133,4(8); в) 16,B(16)´ 2B,6(16).6. а) 10001110011(2) : 10001(2); б) 5456(8) : 33(8); в) 6FA(16) : 13(16);
1) 164.25
2) 520,375
• Перевести данное число в десятичную систему счисления:
1) 1110010100,1011001 (двоичная СС)
2) 1000000110,00101 (двоичная СС)
3) 666,16 (восьмеричная СС)
4) 1C7,68 (шестнадцатеричная СС)
*СС - система счисления.