Задать вопрос
1 апреля, 03:58

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

+1
Ответы (2)
  1. 1 апреля, 05:29
    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. 1 апреля, 06:40
    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 ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы