・ Da auch Anfänger lernen, würde ich mich über Ihre Anleitung freuen. ・ Am Anfang gibt es eine Erklärung für n-ary Zahlen, sodass diejenigen, die es kennen, es nicht lesen müssen.
In unserer Welt beschäftigen wir uns grundsätzlich mit Zahlen mit dem Konzept der Dezimalzahlen. Zum Beispiel Die Nummer 1234 ist ... + 10000 * 0 + 1000 * 1 + 100 * 2 + 10 * 3 + 1 * 4 Dies bedeutet, dass [1,10,100,1000,10000, ......] weggelassen wird, was ein Leistungsmultiplikator von 10 ist. (Obwohl die führende 0 weggelassen wird)
Wenn Sie "1234" in "Kanji" schreiben, stellt dies eine Zahl dar, ohne diese Abkürzung im Miso wegzulassen
Es ist mühsam, 1.224 zu schreiben, nicht wahr? (Ich bin es leid zu sehen)
Ich denke, dass das Schreiben durch Weglassen des Potenzmultiplikators von 10 eine der großen Erfindungen in der Geschichte der Mathematik ist. (Einsteins Abkürzung wird auch als die beste Erfindung bezeichnet, die Einstein hinterlassen hat, und die zu bequeme Abkürzung ist erstaunlich (kleines Durchschnittsgefühl))
Aber im Laufe der Mathematik begannen Mathematiker, Romantik in der Verallgemeinerung zu suchen (ich glaube nicht, dass Romantik dies tut). Sie haben darüber nachgedacht, diese Notation zu verallgemeinern. Was ist, wenn wir die Potenz von n anstelle der Potenz von 10 weglassen? Das ist das Konzept der n-fachen Zahlen.
Erstens sind die Grundregeln dieselben wie in der Dezimalwelt. Es gibt jedoch Regeln, die Sie möglicherweise nicht kennen. das ist "Die Potenz des n-Koeffizienten muss kleiner als n sein." etwas wie. In der binären Welt Wenn man an eine * 4 denkt Wenn a = 3 (2+1)*4 = 8 + 1 * 4 und 8 erscheinen, richtig? Dies hat die Bedeutung von tragen. Ich weiß, ob es in der Mitte der Berechnung einen Übertrag gibt Ich mag es nicht, die Notation weiterzumachen. Natürlich kann es eine Notation geben, die das Tragen erlaubt, aber wenn das Tragen erlaubt ist, wird die Nummernnotation nicht eindeutig bestimmt (es gibt zwei oder mehr).
Zum Beispiel, wenn die Zahl 9 in binärer Notation ist Da es 1 * 8 + 0 * 4 + 0 * 2 + 1 * 1 ist, kann es als 1001 geschrieben werden. Wenn Sie jedoch das Tragen zulassen 08+14+22+11=121 2 ist in dieser Welt als 10 geschrieben 121 = 1 (10) 1 und der Schreibstil unterscheidet sich von 1001 und 9 wird auf zwei Arten ausgedrückt. Natürlich können wir eine Welt der Mathematik schaffen, die dies zugibt, Verwenden wir diese Bedingung, da sie nur durch Setzen von "Der Koeffizient ist kleiner als n" eindeutig bestimmt wird. Weil das bequemer ist. (Ich habe nicht darüber nachgedacht, aber es wäre ärgerlich, wenn ich mich mit gut definierten Themen beschäftigen würde)
Ich werde ein Programm erstellen, um es in eine Basiszahl meiner Wahl umzuwandeln, aber dieses Mal werde ich jeden Koeffizienten als Liste zurückgeben. Der Grund ist, dass Sie beim Konvertieren in 100 Basis den Koeffizienten 87 leicht sehen können. Mit konkreteren Beispielen erklären "8765" ist in 100-facher Notation Es wird (87) (65). ((87) wird eine einstellige Zahl) Es ist jedoch schwer zu sehen, daher werde ich es als [87,65] in die Liste schreiben. Die Bedeutung ist 87 * 100 + 65 * 1.
Geben Sie zunächst die Zahl, die Sie konvertieren möchten, dezimal ein und bitten Sie sie, die Zahl einzugeben, die Sie konvertieren möchten.
N=int(input())#Der Dezimalwert, den Sie konvertieren möchten
K=int(input())#Basisnummer
Oh, ich werde es zu einer Funktion machen
def change(N,shinsu):
Und wir werden die Liste für die Rückkehr vorbereiten. Die Anzahl der Stellen nach der Konvertierung ist leicht zu ermitteln. Ermitteln Sie daher zuerst die Anzahl der Stellen
keta=0
for i in range(10**9):
if N<shinsu**i:
keta+=i
break
Jetzt kennen Sie die Anzahl der Stellen nach der Konvertierung. Mit anderen Worten, nachdem wir die Größe der zurückzugebenden Liste kennen, werden wir die Liste vorbereiten.
ans=[0]*keta
Sie müssen lediglich den K ^ x-Koeffizienten von Anfang an ermitteln.
for i in range(1,keta+1):
j=N//(shinsu**(keta-i))
ans[check]=j
check+=1
N-=(j)*(shinsu**(keta-i))
Wenn Sie es am Ende zurückgeben, sind Sie fertig
return ans
Um es zusammenzusetzen
N=int(input())#Der Dezimalwert, den Sie konvertieren möchten
K=int(input())#Basisnummer
def change(N,shinsu):
keta=0
for i in range(10**9):
if N<shinsu**i:
keta+=i
break
ans=[0]*keta
check=0
for i in range(1,keta+1):
j=N//(shinsu**(keta-i))
ans[check]=j
check+=1
N-=(j)*(shinsu**(keta-i))
return ans
print(change(N,K))
Dies ist abgeschlossen!
1023
2
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
9765624
5
[4, 4, 4, 4, 4, 4, 4, 4, 4, 4]
2853116705
11
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Wenn Sie dagegen eine Liste mit n-fachen Zahlen erhalten, erstellen Sie eine Funktion, die die Dezimalzahlen wiederherstellt.
def henkan(list,shinsu):
l=len(list)
ans=0
for i in range(1,l+1):
ans+=list[-i]*(shinsu**(i-1))
return ans
Es fiel mir persönlich schwer, Hexadezimalzahlen mit A, B, C, D, E und F auszudrücken, also habe ich sie erstellt. Es ist eine Funktion, die ich in der Praxis des Programms gemacht habe, und es ist ganz meine Lieblingsfunktion. Vielen Dank für Ihre Anleitung und Ermutigung> <
Recommended Posts