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))