Spoj - Czy umiesz potęgować.

0

Mam problem z zadaniem ze spoja, konkretnie tym - http://pl.spoj.com/problems/PA05_POT/
U mnie, w visual działa prawidłowo, chyba sprawdziłem wszystko jak się dało i wyniki są dobre. Za to spoj odrzuca za błędną odpowiedź.
Zrobiłem to tak:

 
#include <iostream>
#include <cmath>

using namespace std;


int power(unsigned long int a,unsigned long int b)
{
	int wynik;
	wynik = pow(a%10, b%10); 
	wynik %= 10;
	return wynik;
}

int main()
{
	unsigned long int a,b; // podstawa i wykladnik
	int D;                 

	cin >> D;
	for(int i=0; i<D ; ++i)
	{
		cin >> a >> b;	
		cout << power(a,b) << endl;
	}
	return 0;
}
1

oblicz sobie 2^10 i prześledź kolejne kroki w twoim algorytmie.
Wg twojego programu 2^10 równe jest 1 zamiast 1024.

0
#include <stdio.h>

int main() 
  {
   unsigned T,a,b;
   for(scanf("%u",&T);T--;)
     {
      scanf("%u%u",&a,&b);
      printf("%c\n",(10*(b&3)+(a%10))["0161656161012345678901496569410187456329'"]);
    }
   return 0;
  }
#include <iostream>
#include <cmath>
using namespace std;

int main()
  {
   unsigned t,p,w;
   for(cin>>t;t--;cout<<((int)pow(p%10,1+(3+w)%4))%10<<endl) cin>>p>>w;
   return 0;
  }
3

2^{11} mod  10 = 8
twój wzór
<tex>2^{11 mod 10} mod 10 = 2<tex>

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