1 / 3
Oct 2017

Witam,
Otóż mam pewien problem. W zadaniu “Czy umiesz potęgować” http://pl.spoj.com/problems/PA05_POT/ należy stworzyć program który wypisze cyfrę jedności danej potęgi. Problem polega na tym, że mimo iż uwzględniłem chyba wszystkie przypadki jakie mogą wystąpic, a mój program działa poprawnie sędzia nie akceptuje kodu.

Jakieś porady? Podpowiedzi? Naprawdę czuję się bezradny.
Oto kod:

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <sstream>

    using namespace std;

    int liczby[10][10] = {
    {1,1,1,1,1,1,1,1,1,1},
    {2,4,8,6,2,4,8,6,2,4},
    {3,9,7,1,3,9,7,1,3,9},
    {4,6,4,6,4,6,4,6,4,6},
    {5,5,5,5,5,5,5,5,5,5},
    {6,6,6,6,6,6,6,6,6,6},
    {7,9,3,1,7,9,3,1,7,9},
    {8,4,2,6,8,4,2,6,8,4},
    {9,1,9,1,9,1,9,1,9,1},
    {0,0,0,0,0,0,0,0,0,0}};

    int main()
    {
        int t;
        cin >> t;

        for(int i=0;i<t;i++)
        {
            int p,w;
            string pod,wyk;
            cin>>p>>w;

            ostringstream ss;
            ss << p;
            pod = ss.str();
            ostringstream sa;
            sa << w;
            wyk = sa.str();
            int dlugoscp = pod.length();
            int dlugoscw = wyk.length();


            if(w==0)
            {
                p = 1;
                w = 1;
                cout << "1" << endl;
                continue;
            }
            else if(p==0)
            {
                `p = 10;
                w = 1;
                cout << "0" << endl;
                continue;
            }

            pod = pod[dlugoscp-1];
            wyk = wyk[dlugoscw-1];

            istringstream podstawa(pod);
            podstawa >> p;

            istringstream wykladnik(wyk);
            wykladnik >> w;

            cout << liczby[p-1][w-1] << endl;
        }
        return 0;
    }
  • created

    Oct '17
  • last reply

    Oct '17
  • 2

    replies

  • 372

    views

  • 2

    users

  • 2

    links

nie będę się wypowiadał, czy uwzględniłeś wszystkie przypadki - ale niektóre na pewno źle :slight_smile:

sprawdź dla danych:

1
2 10

kod jest lepiej przekazywać poprzez link do ideone.com3
nie należy zakładać nowego wątku, gdy jest już wątek poświęcony temu zadaniu (a tu jest już dużo wątków), oraz przed napisaniem pytania warto przeczytać te wątki - często już jest odpowiedź

No i teraz już rozumiem, program bierze ostatnią cyfrę z np. 10 czyli 0 co daje fałszywy wynik bo cyfrą jedności 2^10 nie jest 1 a 4.
Nawet chyba zatanawiałem się o tym przez chwilę ale mi finalnie umkneło