0701 - Numere4
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>
- 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>