2407 - Odaoni
Sursa: [1]
[edit | edit source]
Dorel a primit de ziua lui un tricou pe care era scris numărul n.
Cerinţa[edit | edit source]
Aflaţi câţi divizori ai lui n au mulţimea cifrelor din scrierea lor inclusă în mulţimea cifrelor din scrierea lui n.
Date de intrare[edit | edit source]
Fișierul de intrare odaoni.in conține pe prima linie numărul n.
Date de ieșire[edit | edit source]
Fișierul de ieșire odaoni.out va conține pe prima linie numărul divizorilor lui n care au mulţimea cifrelor din scrierea lor inclusă în mulţimea cifrelor din scrierea lui n.
Restricţii şi precizări[edit | edit source]
- 1 ≤ n ≤ 1.000.000.000
Exemplu[edit | edit source]
- odaoni.in
- 12
- odaoni.out
- 3
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
def aceleasi_cifre(numar, divizor):
# Verifică dacă numarul are aceleași cifre ca divizor. return set(str(numar)) <= set(str(divizor))
def nr_divizori_cu_aceleasi_cifre(numar):
# Calculează numărul de divizori ai numarului care au mulțimea cifrelor din scrierea lor inclusă în mulțimea cifrelor din scrierea numarului.
# inițializăm numărul de divizori cu 0 count = 0 # iterăm prin toți divizorii numarului for i in range(1, numar + 1): if numar % i == 0 and aceleasi_cifre(i, numar): count += 1 # returnăm numărul de divizori return count
if __name__ == '__main__':
# deschidem fișierele de intrare și de ieșire with open("odaoni.in", "r") as fin, open("odaoni.out", "w") as fout: # citim numărul din fișierul de intrare numar = int(fin.readline().strip()) # verificăm validitatea datelor de intrare if not (1 <= numar <= 1000000000): raise ValueError("Numarul trebuie să fie între 1 și 1000000000") # calculăm cati divizori au acelasi cifre ca numarul count = nr_divizori_cu_aceleasi_cifre(numar) # scriem rezultatul în fișierul de ieșire fout.write(str(count) + "\n")
</syntaxhighlight>