Le problème D était terrible. C'était plus tard que lorsque je le résolvais en décembre. Je vais l'examiner fermement.
Puisqu'il est diagonal, les numéros de ligne et de colonne sont les mêmes.
answerA1.py
s=[input()[i] for i in range(3)]
print("".join(s))
Jugez s'il s'agit d'une circulation de A à B dans l'ordre. Vous n'avez qu'à juger un personnage à la fois.
answerB.py
a,b=map(int,input().split())
ans=0
for i in range(a,b+1):
s=str(i)
l=len(s)
for i in range(l//2):
if s[i]!=s[l-1-i]:
break
else:
ans+=1
print(ans)
** J'ai mal lu l'énoncé du problème ** et j'ai pensé qu'il y avait ** des cartes dans les 9 cases **, mais c'était facile parce que je devais seulement ** exister **. C'est douloureux.
answerC.py
n,m=map(int,input().split())
if n==1 and m==1:
print(1)
elif n==1:
print(m-2)
elif m==1:
print(n-2)
else:
print((n-2)*(m-2))
Le moyen le plus simple est de déplacer à la fois a et b, mais c'est O ($ n ^ 2
Considérez le nombre de candidats pour un ci-dessus. Tout d'abord, pour l ci-dessus, il suffit de considérer combien de b sont inférieurs à n, il peut donc être calculé par n // b. De plus, le nombre de nombres entre l * b + 1 et n qui ont un reste de 0 à k-1 est le plus petit de n divisé par b et k-1 (où k = Quand il vaut 0, k-1 devient négatif, donc il est supposé être supérieur à 0). La réponse peut être obtenue en soustrayant les candidats ci-dessus pour a ** et en réfléchissant à cela en déplaçant b.
A travers ce problème
J'ai appris ça.
answerD.py
n,k=map(int,input().split())
ans=n*(n-k)
for i in range(k+1,n+1):
ans-=(k*(n//i))
ans-=max(0,min(k-1,n%i))
print(ans)
Recommended Posts