2107 - Pomi

De la Universitas MediaWiki

Enunţ

Î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

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

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

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

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

Exemplul 1

pomi.in
23
41
3
pomi.out
6

Explicație

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

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

Rezolvare

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