Panasonic Programming Contest 2020 3 Complete (Python3 95:30 8WA) Ich werde die Lösung von A ~ C veröffentlichen.
Klicken Sie hier, um den Link zum Panasonic Programming Contest 2020 zu erhalten https://atcoder.jp/contests/panasonic2020
A-Kth Term
Problemstellung
Geben Sie den K-ten Term der folgenden Sequenz der Länge 32 aus.
1, 1, 1, 2, 1, 2, 1, 5, 2, 2, 1, 5, 1, 2, 1, 14, 1, 5, 1, 5, 2, 2, 1, 15, 2, 2, 5, 4, 1, 4, 1, 51
https://atcoder.jp/contests/panasonic2020/tasks/panasonic2020_a
Ich denke, dass Sie diese Zahlenfolge in die Liste aufnehmen und die K-te Eingabe ausgeben sollten.
Einreichungscode
main.py
k = int(input())
x = [1, 1, 1, 2, 1, 2, 1, 5, 2, 2, 1, 5, 1, 2, 1, 14, 1, 5, 1, 5, 2, 2, 1, 15, 2, 2, 5, 4, 1, 4, 1, 51]
print(x[k-1])
B-Bishop
Problemstellung
Es gibt vertikale H-Masse- und horizontale W-Masse-Platten. In das Quadrat in der oberen linken Ecke dieses Bretts wird ein quadratisches Stück gelegt. Wie viele Quadrate können erreicht werden, indem Sie die Bewegung von 0 oder mehr Teilen so oft wiederholen, wie Sie möchten? Wenn sich der Rahmen beispielsweise in der Abbildung befindet, ist das rote Quadrat der Ort, an dem Sie sich gleichzeitig bewegen können. https://atcoder.jp/contests/panasonic2020/tasks/panasonic2020_b
Ich kann es überhaupt nicht verstehen, selbst wenn ich auf die Problemstellung schaue. Wenn Sie sich also die Zahlen in Eingabebeispiel 1 und Eingabebeispiel 2 ansehen, werden Sie feststellen, dass die farbigen Zellen die Zahlen sind, die durch Aufrunden der Anzahl der Zellen hw / 2 erhalten werden.
Wenn jedoch h = 1 oder w = 1 ist, wie in der folgenden Abbildung gezeigt, beträgt die Anzahl der farbigen Zellen 1.
Einreichungscode
main.py
import math
h,w = map(int, input().split(' '))
if h == 1 or w == 1:
print(1)
else:
res = math.ceil(h*w / 2)
print(res)
C-Sqrt Inequality
Problemstellung
$ \ Sqrt {a} + \ sqrt {b} <\ sqrt {c} $? https://atcoder.jp/contests/panasonic2020/tasks/panasonic2020_c
Schreiben wir den Code so wie er ist mit der Problemstellung.
main.py
import math
a,b,c = map(int, input().split(' '))
if math.sqrt(a) + math.sqrt(b) < math.sqrt(c):
print('Yes')
else:
print('No')
In diesem Fall wird WA angezeigt. Deshalb
Von $ \ sqrt {a} + \ sqrt {b}> 0 $ und $ \ sqrt {c}> 0 $
Nachtrag: Der folgende Code war falsch und wurde behoben. (2020/3/16)
check.py
from math import sqrt as sq
a = 250000000
b = 250000000
c = 10**9
while sq(a) + sq(b) >= sq(c):
a += 1
b -= 1
print(a,b)
print(4*a*b, (c-a-b)**2)
print(sq(a)+sq(b)<sq(c))
print(4*a*b < (c-a-b)**2)
250000001 249999999
249999999999999996 250000000000000000
False
True
250000002 249999998
249999999999999984 250000000000000000
False
True
250000003 249999997
249999999999999964 250000000000000000
False
True
250000004 249999996
249999999999999936 250000000000000000
False
True
250000005 249999995
249999999999999900 250000000000000000
False
True
250000006 249999994
249999999999999856 250000000000000000
False
True
250000007 249999993
249999999999999804 250000000000000000
True
True
Einreichungscode
main.py
import math
a,b,c = map(int, input().split(' '))
x = 4 * a * b
y = c - a -b
if y <= 0:
print('No')
elif x < y**2:
print('Yes')
else:
print('No')
Es kann auch c-a-b <0 sein.
Recommended Posts