Mam problem w tym zadaniem: https://pl.spoj.com/problems/PA05_POT/. W CodeBlocksie na oko wszystko jest okej, ale SPOJ pokazuje błędną odpowiedź. Z czego może to wynikać?
#include <iostream>
#include <math.h>
#include <string>
using namespace std;
int testy, dlugosc;
int a, b;
int main()
{
cin>>testy;
for (int i=0; i<testy; i++)
{
cin>>a>>b;
std::string ostatnia_cyfra=std::to_string(pow(a, b));
dlugosc=ostatnia_cyfra.length();
cout<<ostatnia_cyfra[dlugosc-8]<<endl;
}
return 0;
}
Kod po edycji-----------------------------------------------------------------------------------------------------
#include <iostream>
#include <string>
using namespace std;
int testy, dlugosc1, b;
string a;
int main()
{
cin>>testy;
for (int i=0; i<testy; i++)
{
cin>>a>>b;
dlugosc1=a.length();
switch (a[dlugosc1-1])
{
case '0':
{
cout<<"0"<<endl;
}
case '1':
{
cout<<"1"<<endl;
break;
}
case '2':
{
if((b-1)%4==0)
cout<<"2"<<endl;
else if((b-2)%4==0)
cout<<"4"<<endl;
else if((b-3)%4==0)
cout<<"8"<<endl;
else
cout<<"6"<<endl;
break;
}
case '3':
{
if((b-1)%4==0)
cout<<"3"<<endl;
else if((b-2)%4==0)
cout<<"9"<<endl;
else if((b-3)%4==0)
cout<<"7"<<endl;
else
cout<<"1"<<endl;
break;
}
case '4':
{
if ((b-1)%2==0)
cout<<"4"<<endl;
else
cout<<"6"<<endl;
break;
}
case '5':
{
cout<<"5"<<endl;
break;
}
case '6':
{
cout<<"6"<<endl;
break;
}
case '7':
{
if((b-1)%4==0)
cout<<"7"<<endl;
else if((b-2)%4==0)
cout<<"9"<<endl;
else if((b-3)%4==0)
cout<<"3"<<endl;
else
cout<<"1"<<endl;
break;
}
case '8':
{
if((b-1)%4==0)
cout<<"8"<<endl;
else if((b-2)%4==0)
cout<<"4"<<endl;
else if((b-3)%4==0)
cout<<"2"<<endl;
else
cout<<"6"<<endl;
break;
}
case '9':
{
if ((b-1)%2==0)
cout<<"9"<<endl;
else
cout<<"1"<<endl;
break;
}
}
}
return 0;
}