potegowanie-wynik cyfra jednosci

0

Napisałem program który wyświetla cyfrę jedności po wykonaniu potegowania zakres liczb wynosi (1 ≤ a,b ≤ 1 000 000 000). Testowalem go na wiele sposobów, zawsze wyswietla dobre wyniki, ale na stronie niechce mi go zaliczyc, może ktoś ma jakieś sugestie??

 #include <iostream>
#include <cmath>
using namespace std;

int main()
{
    long long int n,wynik,wynik1,wynik2,wynik3,a,b;
    cin>>n;
    unsigned int tab[n],tmp;
    for(unsigned int i=0;i<n;i++)
        {
            cin>>a>>b;
          if(b%4==0)
          {
              wynik=a*a*a*a;
              tab[i]=wynik%10;
          }
          else if(b%4==1)
          {
               wynik1=a;
              tab[i]=wynik1%10;
          }
            else if(b%4==2)
          {
               wynik2=a*a;
              tab[i]=wynik2%10;
          }
             else if(b%4==3)
          {
              wynik3=a*a*a;
              tab[i]=wynik3%10;
          }

        }
        for(int i=0;i<n;i++)
            cout<<tab[i]<<endl;
    return 0;
}


1

1 ≤ a*a*a*a ≤ 10E36

0

Liczby jedności zmieniają się cyklicznie podczas potęgowania. Nie musisz znać całego wyniku, żeby określić cyfrę jedności. Nie musisz ich też przechowywać w tablicy, możesz od razu wypisywać na wyjście

1

Wystarczy tyle:

#include <cstdio>
using namespace std;
const char tb[]="0161656161012345678901496569410187456329";

int main()
  {
   unsigned n,a,b;
   for(scanf("%u",&n);n--;printf("%c\n",tb[10*(b&3)+(a%10)])) scanf("%u%u",&a,&b);
   return 0;
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1