0701 - Numere4

De la Universitas MediaWiki

Enunt

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

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

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

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

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

Exemplu 1

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


Exemplu 2

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


Rezolvare

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