0701 - Numere4

From Bitnami MediaWiki

Enunt[edit | edit source]

Irinei îi plac numerele naturale. Ea știe că orice număr natural cu cifre nenule se poate reprezenta ca un șir de cifre din mulțimea A={1, 2,..., 9}. Irina își alege o cifră k şi îşi propune să afle câte numere naturale au suma cifrelor egală cu un număr dat S și în același timp se reprezintă folosind doar cifre din mulţimea {1, 2,..., k}.

Cerința[edit | edit source]

Dându-se S şi k, se cere să se determine ultima cifră a numărului de numere naturale care se reprezintă doar cu cifre din mulțimea {1,...,k} și au suma cifrelor egală cu S.

Date de intrare[edit | edit source]

Fișierul de intrare numere4in.txt conține pe prima linie numerele naturale T şi k, separate printr-un spaţiu, unde T reprezintă numărul de teste, iar k are semnificaţia din enunţ. Pe linia a doua se găsesc T numere naturale, separate prin câte un spaţiu. Al i-lea număr de pe linia a doua reprezintă suma S corespunzătoare celui de-al i-lea test.

Date de ieșire[edit | edit source]

Fișierul de ieșire numere4out.txt va conține pe prima linie, separate prin câte un spaţiu, T cifre calculate conform cerinţelor, în ordinea dată de fişierul de intrare.

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

  • 1 ⩽ T ⩽ 10
  • 2 ⩽ k ⩽ 5
  • 1 ⩽ S ⩽ 2^30

Exemplu 1[edit | edit source]

numere4in.txt
2 3
3 5
numere4out.txt
4 3


Exemplu 2[edit | edit source]

numere4in.txt
0 0
0 0
numere4out.txt
Nu au fost respectate cerintele impuse


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 0701 - Numere4

def read_input(file_name):

   try:
       with open(file_name, 'r') as file:
           T, k = map(int, file.readline().split())
           S_values = list(map(int, file.readline().split()))
           return T, k, S_values
   except Exception as e:
       print(f"Nu au fost respectate cerințele impuse: {str(e)}")
       return None

def write_output(file_name, result):

   with open(file_name, 'w') as file:
       if result is not None:
           file.write(" ".join(map(str, result)) + "\n")

def last_digit(T, k, S_values):

   result = []
   for S in S_values:
       count = 0
       for i in range(1, k + 1):
           count += pow(i, S, 10)
       result.append(count % 10)
   return result

def main(input_file, output_file):

   result = read_input(input_file)
   if result is not None:
       T, k, S_values = result
       result = last_digit(T, k, S_values)
       write_output(output_file, result)

if __name__ == "__main__":

   main("numere4in.txt", "numere4out.txt")

</syntaxhighlight>