@bunker96
modulo10 (1000000000002 ** 2) = ?
modulo10 (100000000002 ** 2) = ?
modulo10 (10000000002 ** 2) = ?
modulo10 (1000000002 ** 2) = ?
itd
Czy potrzebujesz całej "a" czy wystarczy jej mały kawałek a może jeszcze mniej a, może wystarczy tylko ociupinka a?
Mógł by ktos pomoc? Na testach ten kod działa poprawnie ale "sąd" widzi gdzieś nadal błąd
<code> #include<iostream> #include<math.h> using namespace std; int n,*b,*p,*w; int potega(int p,int w) { if(w==1) return 1; else return p*potega(p,w-1); } int main() { cin>>n; if ((n<=1)||(n>=10))return 0; b=new int[n]; p=new int[n]; w=new int[n]; for(int i=0;i<n;i++) { cin>>p[i]>>w[i]; w[i]++; } for(int i=0;i<n;i++) { if(potega(p[i],w[i])>9) { cout<<(((int)potega(p[i],w[i])))-(((int)potega(p[i],w[i])/10)*10)<<endl; } else cout<<potega(p[i],w[i])<<endl; } return 0; } </code>
Jesli sie ktos to zrozumie to gratuluje xD "Czytanie kodu jest jak wąchanie bąków - nie jest tak źle jak jest własny."
Przeczytaj wszystkie albo chociaż część komentarzy w tym wątku, jak zrozumiesz to gwarantuję, na pewno będziesz miał AC. Natomiast twój kod, bez czytania widać, że twój kod jest do ... bani, ale sam zobacz:
http://ideone.com/Wgw3Kz253
Testy z zadania, to zupełne minimum z minimum, służą bardziej do "mentalnego" zrozumienia zadania a nie do całkowitego stwierdzenia poprawności kodu. Powinieneś wymyślać swoje własne, trudniejsze testy, a tu możesz sprawdzać ich poprawność [dla dowolnych danych]:
http://www.wolframalpha.com/input/?i=mod+%2810000000000000003^2%2C+10%29154
Wiesz, że istnieje takie coś jak wyszukiwanie?( Dokładniej taka lupa w prawym górnym rogu). Ten temat był przetwarzany wiele razy.
Znalazłem test, dla którego twój program daje niepoprawny wynik:
1
333 32323213
Twój out: 1
Poprawny out: 3
Poza tym twój kod jest strasznie nieczytelny - zbyt dużo warunków. Popraw ten kod z pomocą tego linka: cyfra jedności potęgi267.
Wystarczy ułożyć poprawny algorytm z podanych informacji.
PS. Na przyszłość nie twórz nowych wątków, tylko dołączaj się do już istniejących.
PS 2. Zobacz ile już było wątków: wątki
Panowie... poległem, po przeczytaniu tych wszystkich postów i dosłownie dziesiątek prób zmian tego kodu doszedłem do tej wersji i mimo, że przy każdej sprawdzanej przeze mnie kombinacji cyfr wynik wychodzi dobry, to jednak SPOJ nie akceptuje mojego kodu.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a, t;
double b, c;
cin >> t;
for(int i = 0 ; i < t ; i++)
{
cin.clear();
cin.sync();
cin >> a >> b;
a = a%10;
c = pow(a, b);
int d = (int)(c);
cout << d%10 << endl;
}
return 0;
}
Jeżeli jednak nie chcesz wklejać kodu to mam pewną sugestię: problem może leżeć w sposobie wczytywania danych.
Jeżeli na przykład dane wczytujesz w for(int i = 0; i <= t; i++) to pętla wykona się t+1 razy (0, 1, 2, ... , t). Przykładowo:
2
2 3
3 3
2 i 3 - bez problemu, 3 i 3 - bez problemu.
Ale co dalej? Program będzie czekał na jeszcze jeden zestaw danych. Na ideone daje to sukces a na SPOJu WA (sprawdzone na moim kodzie do tego zadania).