Da nur Personen mit einer Bewertung von 1200 oder höher mit der Bewertung verwandt sind, dachte ich, dass die Fertigstellung von 0 kein Problem darstellen würde, aber ich war empört über Pafo 915. Als ich zuvor 0 abgeschlossen habe, war es Pafo 339, also ist es besser als das.
Ich konnte nicht durchbrechen. Einige Leute sagten, dass sie auf Twitter mit 10 9 </ sup> multiplizieren würden, um herauszufinden, wie viele 2 und 5 enthalten waren, und ich konnte die Erklärung dieser Person nicht verstehen. Es blitzte. Es ist eine Dezimalzahl, daher sollten 2 und 5 ausreichen. 2.4, die im Eingabebeispiel angezeigt wird, aber wenn Sie es mit 10 multiplizieren, wird es natürlich zu einer Ganzzahl, aber selbst wenn Sie es mit 1,25 multiplizieren, wird es zu einer Ganzzahl. Kurz gesagt, 2 2 </ sup> × 3 × 5 -1 </ sup> Wenn Sie also sogar 5 -1 </ sup> abbrechen können, bis zu 2 -2 </ sup> Sobald Sie dies wissen, finden Sie heraus, welche Potenzen 2 und 5 für jedes A i </ sub> sind. Wenn die Summe der Multiplikatoren von 2 und 5 für jede Kombination 0 oder mehr ist, dann eine ganze Zahl. Die Gesamtzahl der Kombinationen von 2 und 5 ist nicht so groß, und * O * ( N </ i> 2 </ sup>) ist ausreichend.
def conv(s):
if s.find('.') == -1:
s += '.'
s = s.rstrip('0')
t = len(s) - s.find('.') - 1
a = int(s.replace('.', ''))
if a == 0:
return (0, 0)
x, y = -t, -t
while a % 5 == 0:
x += 1
a //= 5
while a % 2 == 0:
y += 1
a //= 2
return (x, y)
N, *A = open(0).read().split()
N = int(N)
d = {}
for a in A:
t = conv(a)
d.setdefault(t, 0)
d[t] += 1
result = 0
xs = list(d.keys())
for i in range(len(xs)):
x, y = xs[i]
t = d[xs[i]]
if x >= 0 and y >= 0:
result += t * (t - 1) // 2
for j in range(i + 1, len(xs)):
m, n = xs[j]
if x + m >= 0 and y + n >= 0:
result += t * d[xs[j]]
print(result)
Recommended Posts