Concours de programmation Panasonic 2020 3 Terminé (Python3 95:30 8WA) Je publierai la solution de A ~ C.
Cliquez ici pour le lien vers le concours de programmation Panasonic 2020 https://atcoder.jp/contests/panasonic2020
A-Kth Term
Énoncé du problème
Sortez le K-ième terme de la séquence suivante de longueur 32.
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
Je pense que vous devriez mettre cette chaîne de chiffres dans la liste et sortir l'entrée Kth.
Code de soumission
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
Énoncé du problème
Il existe des panneaux de masse H verticale et de masse W horizontale. Une pièce carrée est placée dans le carré dans le coin supérieur gauche de ce plateau. Combien de cases peut-on atteindre en répétant le mouvement de 0 pièces ou plus autant de fois que vous le souhaitez? Par exemple, lorsque le cadre est dans la figure, l'endroit où vous pouvez vous déplacer en même temps est le carré rouge. https://atcoder.jp/contests/panasonic2020/tasks/panasonic2020_b
Je ne comprends pas du tout même si je jette un coup d'œil à l'énoncé du problème. Ainsi, si vous regardez les chiffres de l'exemple d'entrée 1 et de l'exemple d'entrée 2, vous remarquerez que les cellules colorées sont les nombres obtenus en arrondissant le nombre de cellules hw / 2.
Cependant, lorsque h = 1 ou w = 1 comme indiqué dans la figure ci-dessous, le nombre de cellules colorées est 1.
Code de soumission
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
Énoncé du problème
$ \ Sqrt {a} + \ sqrt {b} <\ sqrt {c} $? https://atcoder.jp/contests/panasonic2020/tasks/panasonic2020_c
Écrivons le code tel qu'il est avec l'énoncé du problème.
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')
Si tel est le cas, WA apparaîtra. Donc
À partir de $ \ sqrt {a} + \ sqrt {b}> 0 $ et $ \ sqrt {c}> 0 $
Addendum: le code ci-dessous était incorrect et a été corrigé. (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
Code de soumission
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')
Il peut également être c-a-b <0.
Recommended Posts