3859 - Cai
De la Universitas MediaWiki
Cerinţa
Se dă N, în câte moduri putem plasa 2 cai pe o tablă de șah de N pe N astfel încât să nu se atace?
Date de intrare
Programul citește de la tastatură numărul N.
Date de ieșire
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", programul va afișa pe ecran numărul X, răspunsul la întrebarea din enunț. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse.".
Restricţii şi precizări
- 1 ≤ n ≤ 10.000.
- Caii nu se pot afla pe același pătrat.
Exemple
Exemplul 1
- Intrare
- 2
- Ieșire
- Datele sunt introduse corect.
- 6
Exemplul 2
- Intrare
- 5
- Ieșire
- Datele sunt introduse corect.
- 252
Exemplul 3
- Intrare
- 10001
- Ieșire
- Datele nu corespund restricțiilor impuse.
Rezolvare
def validare(n):
if n < 1 or n > 10000:
return False
else:
return True
def numar_solutii(n):
if not validare(n):
print("Datele nu corespund restricțiilor impuse.")
return
else:
print("Datele sunt introduse corect.")
if n == 1:
return 1
elif n == 2:
return 6
else:
return int((n ** 2) * (n ** 2 - 1) / 2 - 4 * (n - 1) * (n - 2))
if __name__ == '__main__':
n = int(input("Introduceți numărul de rânduri și coloane (N): "))
solutii = numar_solutii(n)
if solutii is not None:
print(
"Numărul de moduri în care putem plasa 2 cai pe o tablă de șah de {} pe {} astfel încât să nu se atace este: {}".format(
n, n, solutii))