3497 - Progresie Geom

De la Universitas MediaWiki

Cerința

Se dă o progresie geometrică cu primul termen x, cu rația egală cu , unde [p] reprezintă partea întreagă a numărului real p. Afișați al n-lea termen.

Date de intrare

Programul citește de la tastatură numerele x a b n.

Date de ieșire

Programul va afișa pe ecran numărul Z, reprezentând al n-lea termen al progresiei.

Restricții și precizări

  • x, a, b au maximum 10.000 de cifre
  • n este cel mult 10.000

Exemplul 1

Input:

1 5 2 11

Output:

1024

Exemplul 2

Input:

1 5 2 9999999999

Output:

Input invalid. Asigurați-vă că x, a, b au cel mult 10.000 de cifre și n este cel mult 10.000.

Rezolvare

import math

def verify_input(x, a, b, n):
    if len(str(x)) > 10000 or len(str(a)) > 10000 or len(str(b)) > 10000 or n > 10000:
        return False
    return True

def main():
    x = int(input("Introduceți primul termen x: "))
    a = int(input("Introduceți a: "))
    b = int(input("Introduceți b: "))
    n = int(input("Introduceți n: "))

    if not verify_input(x, a, b, n):
        print("Input invalid. Asigurați-vă că x, a, b au cel mult 10.000 de cifre și n este cel mult 10.000.")
        return

    # Calcularea [ab]
    ratio = a // b

    # Calcularea al n-lea termen al progresiei
    result = x * (ratio ** (n - 1))

    print(result)

if __name__ == "__main__":
    main()