def bar(k):
score = 0
for i in range(2, k + 1):
j = i - 1
while j > 0:
if i % j == 0:
score = score // 2
else:
score = score + 10
j = j - 1
return score
mod = 10**9 + 7
def foo(n):
m = n % 3
if n == 0:
return 1
elif m == 0:
v = foo(n // 3)
t = 0
for i in range(1, n+1):
t = t + bar(4 * i)
return v + t
elif m == 1:
v = foo(n - 1)
return v + bar(n * n * n)
else:
v = foo(n - 2)
r = 1
for a in range(2, n):
r = r * a % mod
r = r + bar(n)
return v + r
< /code>
Mein Skript: < /p>
def count_operations(n):
if n == 0:
return 1 # Base case: 1 operation for returning 1
elif n % 3 == 0:
return count_operations(n // 3) + 4
elif n % 3 == 1:
return 6 + count_operations(n - 1) + 4
else:
return 9 + 2 * count_operations(n - 2)
< /code>
Ich habe das Skript mit dem Verständnis von n = 1 geschrieben. Die Berechnung von M = 1 % 3 erfordert 1 Betrieb, und der Wert von m beträgt 1. Dann führt der Code 3 Tests des == Operation vor dem Finden eines zu wahren, wenn es auf elif m == 1 trifft. Bis zu diesem Zeitpunkt wurden 4 Operationen durchgeführt. zuletzt für die -). Der rekursive Anruf hat jetzt n = 0 Aus dem rekursiven Aufruf nach Foo. ) treten vor dem Anruf auf anschließend anschließend 1 weitere (+) danach, um die insgesamt 10 zu bringen, ohne die Anzahl in der Bar zu zählen. Simulation des Aufrufs in Bar (1), 1 Der Betrieb (K+1) wird durchgeführt, wenn das obere Ende des Bereichs der für die für die für die Schleife berechnete Reichweite der Gesamtzahl auf 11 erhält ist leer und die Punktzahl von 0 wird zurückgegeben, um die (bereits gezählte) Operation und Rückgabeanweisung in Foo zu vervollständigen. Das bedeutet also, dass insgesamt 11 grundlegende Operationen durchgeführt wurden, und wir kehren 11 als Antwort zurück, wenn n = 1. < /p>
mein Skript nur richtig funktioniert, wenn n = 1 jemand kann Helfen Sie mir, mein Skript zu beheben, um ein Verständnis dafür zu erhalten, wie Sie die richtige Zählung durchführen, wenn n> 1?class Integer(int):
n_ops = 0
def new_patch(name):
def patch(self, *args):
Integer.n_ops += 1
value = getattr(int, name)(self, *args)
if isinstance(value, int) and not (value is True or value is False):
value = Integer(value)
return value
patch.__name__ = name
return patch
methods = {
'__le__': '\u2264',
'__lt__': '',
'__eq__': '==',
'__add__': '+',
'__sub__': '-',
'__mul__': '*',
'__floordiv__': '//',
'__mod__': '%',
}
for name in methods:
setattr(Integer, name, new_patch(name))
def bar(k):
score = 0
for i in range(2, k + 1):
j = i - 1
while j > 0:
if i % j == 0:
score = score // 2
else:
score = score + 10
j = j - 1
return score
mod = 10**9 + 7
Integer.n_ops+=1
def foo(n):
m = n % 3
if n == 0:
return 1
elif m == 0:
v = foo(n // 3)
t = 0
for i in range(1, n+1):
t = t + bar(4 * i)
return v + t
elif m == 1:
v = foo(n - 1)
return v + bar(n * n * n)
else:
v = foo(n - 2)
r = 1
for a in range(2, n):
r = r * a % mod
r = r + bar(n)
return v + r
def countOps(n):
print(f'Number of operations when n={n}: {Integer.n_ops}')
Ich muss ein Python -Skript schreiben, das die Anzahl der Operationen zählt: +, -, *, //, %,>, Python -Code: < /p> [code]def bar(k): score = 0 for i in range(2, k + 1): j = i - 1 while j > 0: if i % j == 0: score = score // 2 else: score = score + 10 j = j - 1 return score
mod = 10**9 + 7
def foo(n): m = n % 3 if n == 0: return 1 elif m == 0: v = foo(n // 3) t = 0 for i in range(1, n+1): t = t + bar(4 * i) return v + t elif m == 1: v = foo(n - 1) return v + bar(n * n * n) else: v = foo(n - 2) r = 1 for a in range(2, n): r = r * a % mod r = r + bar(n) return v + r < /code> Mein Skript: < /p> def count_operations(n): if n == 0: return 1 # Base case: 1 operation for returning 1 elif n % 3 == 0: return count_operations(n // 3) + 4 elif n % 3 == 1: return 6 + count_operations(n - 1) + 4 else: return 9 + 2 * count_operations(n - 2) < /code> Ich habe das Skript mit dem Verständnis von n = 1 geschrieben. Die Berechnung von M = 1 % 3 erfordert 1 Betrieb, und der Wert von m beträgt 1. Dann führt der Code 3 Tests des == Operation vor dem Finden eines zu wahren, wenn es auf elif m == 1 trifft. Bis zu diesem Zeitpunkt wurden 4 Operationen durchgeführt. zuletzt für die -). Der rekursive Anruf hat jetzt n = 0 Aus dem rekursiven Aufruf nach Foo. ) treten vor dem Anruf auf anschließend anschließend 1 weitere (+) danach, um die insgesamt 10 zu bringen, ohne die Anzahl in der Bar zu zählen. Simulation des Aufrufs in Bar (1), 1 Der Betrieb (K+1) wird durchgeführt, wenn das obere Ende des Bereichs der für die für die für die Schleife berechnete Reichweite der Gesamtzahl auf 11 erhält ist leer und die Punktzahl von 0 wird zurückgegeben, um die (bereits gezählte) Operation und Rückgabeanweisung in Foo zu vervollständigen. Das bedeutet also, dass insgesamt 11 grundlegende Operationen durchgeführt wurden, und wir kehren 11 als Antwort zurück, wenn n = 1. < /p> mein Skript nur richtig funktioniert, wenn n = 1 jemand kann Helfen Sie mir, mein Skript zu beheben, um ein Verständnis dafür zu erhalten, wie Sie die richtige Zählung durchführen, wenn n> 1?class Integer(int): n_ops = 0
def new_patch(name): def patch(self, *args): Integer.n_ops += 1 value = getattr(int, name)(self, *args) if isinstance(value, int) and not (value is True or value is False): value = Integer(value) return value patch.__name__ = name return patch
for name in methods: setattr(Integer, name, new_patch(name))
def bar(k): score = 0 for i in range(2, k + 1): j = i - 1 while j > 0: if i % j == 0: score = score // 2 else: score = score + 10 j = j - 1 return score
mod = 10**9 + 7 Integer.n_ops+=1
def foo(n): m = n % 3 if n == 0: return 1 elif m == 0: v = foo(n // 3) t = 0 for i in range(1, n+1): t = t + bar(4 * i) return v + t elif m == 1: v = foo(n - 1) return v + bar(n * n * n) else: v = foo(n - 2) r = 1 for a in range(2, n): r = r * a % mod r = r + bar(n) return v + r
def countOps(n): print(f'Number of operations when n={n}: {Integer.n_ops}') [/code]
Dies ist das erste Mal, dass ich eine Frage stelle, aber sie ist so seltsam, dass es sich meiner Meinung nach lohnen könnte, sie hier zu stellen. Ich löse ein Problem, bei dem ich ein Diagramm habe,...
Dies ist das erste Mal, dass ich eine Frage stelle, aber sie ist so seltsam, dass es sich meiner Meinung nach lohnen könnte, sie hier zu stellen. Ich löse ein Problem, bei dem ich ein Diagramm habe,...
Ich bin ein Anfänger und lerne gerade von BST in Java. Für dieses Projekt versuche ich, einen Knoten mit 2 untergeordneten Knoten zu löschen, aber ich habe Probleme, die rekursive Methode zu...
Ich bin ein Anfänger und lerne gerade von BST in Java. Für dieses Projekt versuche ich, einen Knoten mit 2 untergeordneten Knoten zu löschen, aber ich habe Probleme, die rekursive Methode zu...
Guten Tag, alle. Ich versuche, einen Vergleich mit der Berechnung zwischen zwei Datenrahmen durchzuführen und eine Ausgabe in einer Tabelle mit zwei Spalten zu geben: Art der Änderung und Anzahl der...