Задать вопрос
29 июня, 19:56

Заданы 2 значения натурального числа N (0<=N<=100000000), записанные в десятичной системе счисления с неизвестным основанием A (2<=A<=16). Написать программу на, которая определяет неизвестное основание системы счисления.

+3
Ответы (2)
  1. 29 июня, 21:41
    0
    Язык 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. 29 июня, 22:09
    0
    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
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Заданы 2 значения натурального числа N (0 ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы