4049 - N Div N Len: Difference between revisions

From Bitnami MediaWiki
Paul Ungur (talk | contribs)
Paul Ungur (talk | contribs)
No edit summary
Line 26: Line 26:
==Rezolvare==
==Rezolvare==
<syntaxhighlight lang="python" line="1">
<syntaxhighlight lang="python" line="1">
def validate_input(n):
def validare_date(n):
     if not isinstance(n, int) or n < 1 or n > 10**5:
     if not isinstance(n, int) or n < 1 or n > 10**5:
         return False
         return False
     return True
     return True


def find_k(n):
def find_k(n):
     m = len(str(n))
     nrCif = 1
     k = [1] + [0] * (m - 1)
     copie_n = n
     for i in range(m - 2, -1, -2):
     print(n, end='')
         k[i], k[i+1] = 1, 0
    while n:
    while int(''.join(map(str, k))) % n != 0:
         nrCif += 1
         for i in range(m - 1, -1, -1):
        n //= 10
             if k[i] == 0:
         for i in range(1, copie_n):
                k[i] = 1
             print(0, end='')
                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__':
if __name__ == '__main__':
     main()
     n = int(input("Introduceti n: "))
    if validare_date(n):
        find_k(n)
    else:
        if not validare_date(n):
            print("Date de intrare incorecte")
</syntaxhighlight>
</syntaxhighlight>

Revision as of 15:52, 26 April 2023

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 validare_date(n):

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


def find_k(n):

   nrCif = 1
   copie_n = n
   print(n, end=)
   while n:
       nrCif += 1
       n //= 10
       for i in range(1, copie_n):
           print(0, end=)


if __name__ == '__main__':

   n = int(input("Introduceti n: "))
   if validare_date(n):
       find_k(n)
   else:
       if not validare_date(n):
           print("Date de intrare incorecte")

</syntaxhighlight>