Początki, pytanie o licznik zapytań

Początki, pytanie o licznik zapytań
Paweł Tometczak
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad rok
  • Postów:31
0

Cześć,

zaczynam więc proszę o wyrozumiałość :-)

Mam kod na proste liczenie potęg;

Kopiuj
wynik = 1
a = int(input() )
b = int(input() )

while b > 0 :
    wynik *= a
    b = b-1
print (wynik)

Chciałem dodać ilość testów do wykonania i powiem szczerze, że nie wiem jak i gdzie :-(
( for i in range(0, zestawy, +1): ) ???

MO
Wiesz że wystarczy: wynik = a ** b Rozumiem że chcesz to zrobić "na piechotę"?
Paweł Tometczak
Tak wiem, że w pythonie potęga to a**b ale chciałem znanym mi starym algorytmem.
SE
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 3 lata
  • Postów:318
1

Można np. tak:

Kopiuj
test_cases = int(input())
for i in range(test_cases):
    #tu Twój kod

PS. Zamiast b = b-1 można b -= 1

edytowany 2x, ostatnio: Serechiel
Paweł Tometczak
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad rok
  • Postów:31
0
Serechiel napisał(a):

Można np. tak:

Kopiuj
test_cases = int(input())
for i in range(test_cases):
    #tu Twój kod

PS. Zamiast b = b-1 można b -= 1

Ostatecznie taki kod mam i działa:-)

Kopiuj
test_cases = int (input ())
for i in range (test_cases):
    a = int(input())
    b = int(input())
    wynik=(a**b)
    print (wynik%10)

modulo dodawałem bo potrzebowałem odciąć liczbę jedności

edytowany 1x, ostatnio: Paweł Tometczak
Paweł Tometczak
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad rok
  • Postów:31
0

Jeszcze dopytam:)
takie zadanie:
https://pl.spoj.com/problems/PA05_POT/

No i pokazuje mi błąd wykonania:)
Ktoś widzi błąd?

Guaz
Brakuje ci split'a w input(). Dlatego nie wczytasz dwóch intów z jednego wiersza.
DJ
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 5 lat
  • Postów:35
0
Kopiuj
def power(a,b):
  base = a
  for i in range(1, b):
    a = a * base
  return a

na przyklad tak jezeli chcesz wprowadzic dotatkowa zmienna

Guaz
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Częstochowa
  • Postów:221
0
Kopiuj
test_cases = int (input ())
for i in range (test_cases):
    a,b  = map(int, input())
    print ( (a** b) %10)

Ale to nadal nie zda czasu wykonania na SPOJu bo jest to zagadnienie z własności matematycznej, dlatego przekroczy czas wykonywania.

Zapoznaj się z tym:
https://brilliant.org/wiki/finding-the-last-digit-of-a-power/


Linux Mint
Arduino / Python 3.5.2
Paweł Tometczak
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad rok
  • Postów:31
0

Tak wiem, dzięki za link.
Ostatecznie przeszedł taki kod.
Wykorzystałem ostatnie cyfry wyników, które się powtarzają.

Kopiuj
tab = [[0, 0, 0, 0],
       [1, 1, 1, 1],
       [6, 2, 4, 8],
       [1, 3, 9, 7],
       [6, 4, 6, 4],
       [5, 5, 5, 5],
       [6, 6, 6, 6],
       [1, 7, 9, 3],
       [6, 8, 4, 2],
       [1, 9, 1, 9]]
 
test_cases = int(input())
for i in range(test_cases):
    a, b = map(int, input().split())
 
    print(tab[a%10][b%4])

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.