4049 - N Div N Len

From Bitnami MediaWiki

Cerința:

Se dă un număr natural n. Găsiți orice număr k de exact n cifre care este divizibil cu n.

Date de intrare:

Se citește numărul n.

Date de ieșire:

Se afișează numărul k.

Restricții și precizări:

1≤n≤10^5 Dacă există mai multe soluții posibile, se acceptă oricare. Pentru 20 de puncte, n≤6 Pentru 40 de puncte, n≤9 Pentru 50 de puncte, n≤18

Exemplu:

Intrare 3 Ieșire 123

Explicație:

Numărul 123 are 3 cifre și este divizibil cu 3.

Rezolvare

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

   if not isinstance(n, int) or n < 1 or n > 10**5:
       return False
   return True

def find_k(n):

   m = len(str(n))
   k = [1] + [0] * (m - 1)
   for i in range(m - 2, -1, -2):
       k[i], k[i+1] = 1, 0
   while int(.join(map(str, k))) % n != 0:
       for i in range(m - 1, -1, -1):
           if k[i] == 0:
               k[i] = 1
               break
           else:
               k[i] = 0
   return int(.join(map(str, k)))

def main():

   n = int(input("Introduceti n: "))
   if not validate_input(n):
       print("Date de intrare incorecte")
       return
   k = find_k(n)
   print(k)

if __name__ == '__main__':

   main()

</syntaxhighlight>