1124 - Patrate: Difference between revisions

From Bitnami MediaWiki
Cata (talk | contribs)
Pagină nouă: ==Cerința== Dându-se n, un număr natural, să se afle numărul de pătrate care au colţurile coordonate numere întregi cuprinse între 0 şi n inclusiv. ==Date de intrare== Programul citește de la tastatură un număr natural n. ==Date de ieșire== Programul va afişa pe ecran un număr natural, reprezentând numărul de pătrate formate cu cele (n+1)2 puncte. Deoarece rezultatul poate fi mare, se va afişa răspunsul modulo 666013. ==Restricții și precizări== * 1...
 
 
(3 intermediate revisions by 2 users not shown)
Line 6: Line 6:


==Date de ieșire==
==Date de ieșire==
Programul va afişa pe ecran un număr natural, reprezentând numărul de pătrate formate cu cele (n+1)2 puncte. Deoarece rezultatul poate fi mare, se va afişa răspunsul modulo 666013.
Programul va afişa pe ecran un număr natural, reprezentând numărul de pătrate formate cu cele (n+1)2 puncte. Deoarece rezultatul poate fi mare, se va afişa răspunsul modulo 666013. De asemenea, se afișează un mesaj de validare a datelor introduse "Input valid" sau instructiuni de introducere pentru n în caz contrar ("n trebuie sa fie intre 1 si 2.000.000.000").


==Restricții și precizări==
==Restricții și precizări==
Line 13: Line 13:
* Pentru teste în valoare de 75 de puncte, n ≤ 2.000.000
* Pentru teste în valoare de 75 de puncte, n ≤ 2.000.000
==Exemplu==
==Exemplu==
Intrare
; Intrare


2
: 2
Ieșire
; Ieșire
 
: Input valid
6
: 6
==Explicație==
==Explicație exemplu==
Pătratele ce se formează au colţurile:
Pătratele ce se formează au colţurile:


Line 34: Line 34:
     if n < 1 or n > 2000000000:
     if n < 1 or n > 2000000000:
         raise ValueError("n trebuie sa fie intre 1 si 2.000.000.000")
         raise ValueError("n trebuie sa fie intre 1 si 2.000.000.000")
    else:
        print("Input valid")




Line 50: Line 52:




def main():
if __name__ == "__main__":
     n = int(input())
     n = int(input())
     sol = calculate_sum(n)
     sol = calculate_sum(n)
     print(sol)
     print(sol)
if __name__ == "__main__":
    main()


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 20:51, 4 May 2023

Cerința[edit | edit source]

Dându-se n, un număr natural, să se afle numărul de pătrate care au colţurile coordonate numere întregi cuprinse între 0 şi n inclusiv.

Date de intrare[edit | edit source]

Programul citește de la tastatură un număr natural n.

Date de ieșire[edit | edit source]

Programul va afişa pe ecran un număr natural, reprezentând numărul de pătrate formate cu cele (n+1)2 puncte. Deoarece rezultatul poate fi mare, se va afişa răspunsul modulo 666013. De asemenea, se afișează un mesaj de validare a datelor introduse "Input valid" sau instructiuni de introducere pentru n în caz contrar ("n trebuie sa fie intre 1 si 2.000.000.000").

Restricții și precizări[edit | edit source]

  • 1 ⩽ n ⩽ 2.000.000.000
  • Pentru teste în valoare de 30 de puncte, n ≤ 10
  • Pentru teste în valoare de 75 de puncte, n ≤ 2.000.000

Exemplu[edit | edit source]

Intrare
2
Ieșire
Input valid
6

Explicație exemplu[edit | edit source]

Pătratele ce se formează au colţurile:

  1. (0, 0), (0, 1), (1, 1), (1, 0)
  2. (0, 1), (0, 2), (1, 2), (1, 1)
  3. (1, 0), (1, 1), (2, 1), (2, 0)
  4. (1, 1), (1, 2), (2, 2), (2, 1)
  5. (0, 0), (0, 2), (2, 2), (2, 0)
  6. (0, 1), (1, 2), (2, 1), (1, 0)

Rezolvare[edit | edit source]

<syntaxhighlight lang="python"> def validate_input(n):

   if n < 1 or n > 2000000000:
       raise ValueError("n trebuie sa fie intre 1 si 2.000.000.000")
   else:
       print("Input valid")


def calculate_sum(n):

   validate_input(n)
   sol = 0
   mod = 666013
   n %= mod
   for i in range(n):
       sol += (n - i) * (n - i) * (i + 1)
       sol %= mod
   return sol


if __name__ == "__main__":

   n = int(input())
   sol = calculate_sum(n)
   print(sol)

</syntaxhighlight>

Explicație cod[edit | edit source]

Acest cod definește trei funcții și o funcție principală:

Funcția validate_input(n) verifică dacă valoarea parametrului n este cuprinsă între 1 și 2.000.000.000, și aruncă o excepție ValueError dacă nu este.

Funcția calculate_sum(n) primește un parametru n și calculează suma unei anumite formule matematice, bazată pe valoarea lui n și un număr constant (mod = 666013). Apoi, funcția returnează această sumă.

Funcția main() citește un număr întreg de la tastatură, apelează funcția calculate_sum(n) pentru a calcula suma corespunzătoare, și apoi afișează rezultatul.

Dacă acest script este rulat ca un program, atunci funcția main() este apelată.