spoj- potęgowanie

spoj- potęgowanie
GF
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 8 lat
  • Postów:24
0

http://ideone.com/rCUkt8 --->kod
http://pl.spoj.com/problems/PA05_POT/ ---> zadanie
Czy mógłby ktoś mnie nakierować na poprawne myślenie? Cały czas próbuje jakoś ogarnąć te potęgi:
Dla niektórych liczb są 4 możliwe odpowiedzi
Dla tych co była jedna możliwa odpowiedź to jest ustalone
Dla pozostałych są dwie możliwości, czyli odpowiedź będzie zależna od tego czy potęga do której mam podnieść jest parzysta czy nie, tak?
Ale te poczwórne przypadki to jakos nie mogę dla nich za bardzo nic wymyślić, np. dla 8 ostatnią cyfą będzie 8 dla kolejnych potęg 1,5,9,13... itd
Ale nie bardzo mam pomysł jak to zapisać

edytowany 1x, ostatnio: GrumpyFox
SI
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 6 godzin
0

Dla wszystkich potęg jest jedna, dwie albo cztery możliwe ostatnie cyfry. Innych możliwości NIE MA. Swoją drogą czym liczyłeś dla 8? bo mi wyszło:
8
64
512
4096
32768
262144
2097152
16777216
134217728

GF
8^1 =8 8^5=34768 itd
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:43 minuty
1

popatrz na kolejne potęgi ostatniej cyfry:
0 - 0 0 0 0 0 0 0 0 0
1 - 1 1 1 1 1 1 1 1 1
2 - 2 4 8 6 2 4 8 6 2
3 - 3 9 7 1 3 9 7 1 3
4 - 4 6 4 6 4 6 4 6 4
5 - 5 5 5 5 5 5 5 5 5
6 - 6 6 6 6 6 6 6 6 6
7 - 7 9 3 1 7 9 3 1 7
8 - 8 4 2 6 8 4 2 6 8
9 - 9 1 9 1 9 1 9 1 9
Widać cykl, tylko ostatnia cyfra wykładnika ma wpływ na wynik, do tego cykl, czyli wynik możesz sobie stabilizować.

I jeszcze to https://4programmers.net/Forum/C_i_C++/289557-spoj_przekroczono_limit_czasu_szachownica_vs_kwadraty?p=1360213#id1360213


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22
GF
no tak ja widzę ten cykl, tylko nie wiem jak zapisać go dla tych wykładników co są 4 możliwości w odpowiedzi. Bo to są takie liczby jak np. 1, 5, 9, 13 ... i nie bardzo umiem znaleźć jakąś zaleźność , żeby ułożyć dla nich jakiegoś ifa
MarekR22
tab[a%10][b%4]
GF
Chyba nie bardzo umiem zrozumieć tab[a%10][b%4]
bl4ster
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Lublin
  • Postów:197
0

@GrumpyFox: chyba @MarekR22 chodziło o coś takiego:

Kopiuj
#include <iostream>

int main()
{
    int howMany = 0;
    int a[10], b[10];

    int array[9][9] = {
        {1,1,1,1,1,1,1,1,1},
        {2,4,8,6,2,4,8,6,2},
        {3,9,7,1,3,9,7,1,3},
        {4,6,4,6,4,6,4,6,4},
        {5,5,5,5,5,5,5,5,5},
        {6,6,6,6,6,6,6,6,6},
        {7,9,3,1,7,9,3,1,7},
        {8,4,2,6,8,4,2,6,8},
        {9,1,9,1,9,1,9,1,9}
                      };
    std::cin>>howMany;

    for (int i=0; i< howMany; i++)
    {
        std::cin>>a[i]>>b[i];
    }
    for (int i=0; i<howMany; i++)
    {
        std::cout<<array[a[i]%10-1][b[i]%4-1]<<"\n";
    }
}

Jednak nie wiem, dlaczego SPOJ nie chce mi tego przyjąć.
Podejrzewam, że coś nie tak mam z I/O.


"Jesteśmy świadomymi istotami, a życie jest sposobem w jaki wszechświat poznaje sam siebie." prof. Brian Cox
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:43 minuty
0

@bl4ster no i crash i na dodatek zła odwiedź.

Kopiuj
static cosnt char 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'}
    };
unsigned int a, b;
while(cin >> a >> b)
{
    if (b != 0) {
        cout << tab[a%10][b%4] << '\n';
    } else {
        cout << '1' << '\n';
    }
}

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

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.