3859 - Cai
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
<syntaxhighlight lang="python" line="1"> 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))
</syntaxhighlight>