0701 - Numere4

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

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