In vielen Fällen lösen die Abbildungen das Problem der wettbewerbsfähigen Programmierung. Zu diesem Zeitpunkt ist es oft effektiver, den Eingabewert zu ändern. Die folgenden Schnittstellen können mit jupyter sofort realisiert werden.
Educational Codeforces Round 80 A.Deadline https://codeforces.com/contest/1288/problem/A
Wenn N, d, x positive ganze Zahlen größer oder gleich 1 und $ d \ leq x $ sind, finden Sie heraus, ob es ein x gibt, das die folgenden Anforderungen erfüllt.
Beispiele für NEIN und JA im Beispielproblem sind links bzw. rechts dargestellt. Dies kann sofort durch einfaches Verwenden der matplotlib-Funktion erfolgen. Blau ist die Linie von $ y = n $, Gelb ist $ y = \ left \ lceil \ frac {d} {x + 1} \ right \ rceil + x $ und Grün ist das Diagramm vor dem Anwenden der Deckenfunktion.
Durch diese Darstellung ist ersichtlich, dass JA / NEIN durch das Vorhandensein des Schnittpunkts der blauen und der gelben Linie bestimmt wird. (Natürlich ist dies selbsterklärend, weil es eine Ungleichung ist ...)
%matplotlib inline
import matplotlib.pyplot as plt
from ipywidgets import interact
import numpy as np
fig, (axL, axR) = plt.subplots(ncols=2, figsize=(10,4))
n,d = 5,11
xaxis = yaxis = 8
x = np.linspace(1, n, num = 100)
y1 = [n] *100
y2 = np.ceil(d / (x + 1) ) + x
y3 = d / (x + 1) + x
axL.plot(x, y1)
axL.plot(x, y2)
axL.plot(x, y3)
axL.set_xlim(0, xaxis)
axL.set_ylim(0, yaxis)
axL.grid(True)
n2,d2 = 5,4
xaxis = yaxis = 8
x2 = np.linspace(1, n2, num = 100)
y21 = [n2] *100
y22 = np.ceil(d2 / (x2 + 1) ) + x2
y23 = d2 / (x2 + 1) + x2
axR.plot(x2, y21)
axR.plot(x2, y22)
axR.plot(x2, y23)
axR.set_xlim(0, xaxis)
axR.set_ylim(0, yaxis)
axR.grid(True)
fig.show()
Mit Interact können Sie einen Schieberegler erstellen, der n und d variabel bewegt.
%matplotlib inline
import matplotlib.pyplot as plt
from ipywidgets import interact
import numpy as np
d = 20
n = 20
import math
xaxis = yaxis = 20
nlimit = 20
dlimit = 100
@interact(n=(1, nlimit), d = (1,dlimit))
def f(n, d):
x = np.linspace(1, n, num = 100)
y1 = [n] * 100
y2 = np.ceil(d / (x + 1) ) + (x)
y3 = d / (x + 1) + x
plt.xlabel("x-axis")
plt.ylabel(" y-axis")
plt.plot(x, y1)
plt.plot(x, y2)
plt.plot(x, y3)
plt.xlim(0, xaxis)
plt.ylim(0, yaxis)
plt.grid(True)
plt.figure(figsize=(1,1))
plt.show()