2107 - Pomi

From Bitnami MediaWiki

Enunţ[edit | edit source]

În livada sa, Vasile are pomi fructiferi, organizaţi în parcele în funcţie de soi. În fiecare an, scoate la vânzare doar o parte dintre pomii adulţi dintr-o singură parcelă. Ca să asigure spaţiu de dezvoltare pentru pomii rămaşi, Vasile s-a decis să fie scoşi la vînzare numai acei pomi din parcelă al căror număr de ordine este divizibil cu o cifră k, numită cifra anului.

Cerința[edit | edit source]

Cunoscând valorile a şi b, reprezentând numerele de ordine ale primului, respectiv ultimului pom din parcela din care se face vânzarea, precum şi k – cifra anului, se cere să se determine numărul de pomi scoşi la vânzare de Vasile în acest an.

Date de intrare[edit | edit source]

Fişierul de intrare pomi.in conţine trei numere naturale a, b, k, fiecare pe câte o linie, ce reprezintă: numerele de ordine ale primului, respectiv ultimului pom din parcela din care se face vânzarea şi cifra anului.

Date de ieșire[edit | edit source]

Fişierul de ieşire pomi.out va conţine pe prima linie, un număr natural ce reprezintă numărul de pomi scoşi la vânzare de către Vasile.

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

  • 1 < k ≤ 9
  • 1 < a < b
  • a şi b sunt numere naturale cu cel mult 80 de cifre fiecare.

Exemplul 1[edit | edit source]

pomi.in
23
41
3
pomi.out
6

Explicație[edit | edit source]

Sunt 6 pomi scoşi la vânzare în acest an. În cadrul parcelei, ei au avut numerele de ordine: 24, 27, 30, 33, 36, 39 (toate numerele dintre a şi b, care sunt divizibile cu cifra anului, k).

Exemplul 2[edit | edit source]

pomi.in
41
23
3
pomi.out
Date de intrare invalide!

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 2107 Pomi

def verifica_date_intrare(a, b, k):

 if not (1 < k <= 9):
   return False
 if not (1 < a < b):
   return False
 return True

def numar_pomi_scoasi_la_vanzare(a, b, k):

 count = 0
 for i in range(a, b + 1):
   if i % k == 0:
     count += 1
 return count

def main():

 # Citire date de intrare
 try:
   with open("pomi.in", "r") as fin:
     a = int(fin.readline().strip())
     b = int(fin.readline().strip())
     k = int(fin.readline().strip())
 except (ValueError, FileNotFoundError):
   # Date de intrare invalide sau lipsa fisierului
   with open("pomi.out", "w") as fout:
     fout.write("Date de intrare invalide!")
   return
 # Verificare date de intrare
 if not verifica_date_intrare(a, b, k):
   with open("pomi.out", "w") as fout:
     fout.write("Date de intrare invalide!")
   return
 # Calcul numar de pomi scoși la vânzare
 numar_pomi = numar_pomi_scoasi_la_vanzare(a, b, k)
 # Scriere rezultat in fisierul de ieșire
 with open("pomi.out", "w") as fout:
   fout.write(str(numar_pomi))

if __name__ == "__main__":

 main()

</syntaxhighlight>