to przecież oczywiste, to są dane to testu, który powinieneś wykonać na ideone.com3
O Szanowni Rozkminiacze,
mam ogromna prosbe, czy moglby ktos rzucic okiem na ten kod? nie moge znalezc przyczyny, ze mam ciagle bledna odpowiedz. Rozumiem, ze sedzia nie moze sie mylic, ale ja juz nie wiem jak to znalezc, chyba trzeba kogos madrzejszego. Weryfikowalem wyniki miedzy podstawa 0 do 11 i wykladnikiem 0 do 9. Zaden blad sie nie pojawil, wszystkie wyniki zgodnie z oczekiwaniami.
Mariusz,
dzieki za pomoc, testowalem tez 10 i 100 w eclipse, i mi dzialo ideone natomiast wyswietlil mi problem. Usunalem wiec nadmiarowy kod, z innych pomyslow ktore mialem i mi zaakceptowal.
23001475 2019-01-05 23:26:26
Czy umiesz potęgować
zaakceptowano
edit run
0.06
4468M
JAVA
Wspomniales ze mozna to lepiej bylo napisac. Jestem baaaaaaaardzo poczatkujacy, czy moglbys mi w wiadomosci prywatnej napisac, jak programista by to napisal? i mniej wiecej co najbardziej kulo w oczy, jestem bardzo otwarty na krytyke. Traktuje te zadanie jako mozliwosc rozwoju a nie test moich zdolnosci. Na kazde zadanie poswiecam duzo czasu, ale i dowiaduje sie nowych klasach. np tutaj o bigdecimal :Dktore nie bylo rozwiazaniem
Witam. Wiem, że wątek był poruszany wiele razy ale po przeczytaniu dyskusji dalej nie wiem gdzie leży problem mojego kodu. Testowałem wiele przypadków i zawsze program zwraca dobrą odpowiedź. Jednakże sędzia odrzuca moją pracę. Z góry dziękuję za pomoc.
#include
using namespace std;
unsigned long int ile,a,b,ktora[4];
int main()
{
cin>>ile;
for(int i=0;i<ile;i++)
{
cin >> a >> b;
if(b==0)cout<<1;
else{
ktora[0]=a%10;
ktora[1]=a * a%10;
ktora[2]=a * a * a%10;
ktora[3]=a * a * a * a%10;
if (b%4==0) cout<<ktora[3]<<endl;
else if (b%4==1) cout<<ktora[0]<<endl;
else if (b%4==2) cout<<ktora[1]<<endl;
else if (b%4==3) cout<<ktora[2]<<endl;
}
}
return 0;
}
Wybacz ale może czegoś nie widzę. Ale zrobiłem klika cout’ów żeby wyświetliły mi wyniki. I teraz to wygląda tak.
#include
using namespace std;
unsigned long long int ile,a,b,ktora[4];
int main()
{
cin>>ile;
for(int i=0;i<ile;i++)
{
cin >> a >> b;
if(b==0)cout<<1;
else{
ktora[0]=a%10; cout<<a<<" “; cout<<a%10<<endl;
ktora[1]=a * a%10; cout<<a * a<<” “; cout<<a *a%10<<endl;
ktora[2]=a * a * a%10; cout<<a * a * a<<” “; cout<<a * a * a%10<<endl;
ktora[3]=a * a * a * a%10; cout<<a * a * a * a<<” "; cout<<a * a * a * a%10<<endl;
if (b%4==0) cout<<ktora[3]<<endl;
else if (b%4==1) cout<<ktora[0]<<endl;
else if (b%4==2) cout<<ktora[1]<<endl;
else if (b%4==3) cout<<ktora[2]<<endl;
}
}
return 0;
}
Program zwraca takie wartości
999107 3
999107 7
998214797449 9
997323391634878043 3
13453960652956817745 5
3
9999197 3
9999197 7
99983940644809 9
3634939363436431109 9
6379398151447440337 7
9
99992007 3
99992007 7
9998401463888049 9
2040603067473891991 1
3661983323597490785 5
1
Co jest wynikiem (jeżeli się nie mylę) zgodnym z prawdą.Jeszcze raz dziękuję za wszelką pomoc.
Niestety poprawny jest wynik tylko dla pierwszego przypadku. W dwu pozostałych przypadkach masz zły wynik. Spróbuj znaleźć przyczynę samodzielnie. Przeanalizuj wyniki dla takich przypadków:
9
7 3
97 3
997 3
9997 3
99997 3
999997 3
9999997 3
99999997 3
999999997 3
W dwóch Twój kod daje niepoprawny wynik. Zgadnij w których…
Do testowania kodu najlepiej użyć Ideone, zamiast wklejać kod też lepiej jest podać link do kodu w Ideone.
Również ja mam problem z tym zadaniem :/. Mój kod wydaje się działać jednak spoj zwraca błędną odpowiedź. Nie mam pojęcia co może nie działać. Poniżej mój kod:
#include
using namespace std;
int pot(int a,int b)
{
int c=1;
for (int i=0; i<b; i++)
{
c*=a;
}
return c;
}
int main()
{
int t;
cin>>t;
long int tab[t];
long int tab2[t];
long int tab3[t];
for (int i=0; i<t; i++)
{
cin>>tab[i]>>tab2[i];
if (tab2[i]==0) tab[i]=1;
tab[i]=tab[i]%10;
tab2[i]=tab2[i]%10;
if (tab2[i]==0) tab2[i]=10;
}
for (int i=0; i<t; i++)
{
if (tab[i]==0) tab3[i]=10;
else tab3[i]=pot(tab[i],tab2[i]);
cout<<tab3[i]%10<<endl;
}
return 0;
}
Moze podpowiem gdzie lezy podstawowy problem
Pierwsza linijka zgoda. Tylko cyfra jednosci w podstawie wplywa na cyfre jednosci w wyniku. (latwo zauwazyc przy mnozeniu pisemnym)
Druga linijka niestety to nie zadziala.
przyklad:
2 do potegi 10 = 1024,
2 do potegi 20 = 1048576
cyfry jednosci sa rozne
Czyli na pewno nie bedzie dzialac dla %10.
Dla pewnej wartosci zadziala. Ja uzylem arkusz kalkulacyjny do przeliczenia kolejnych poteg dla wielu kolejnych podstaw i zauwazenia cyklicznosci. Mozna tez policzyc na kalkulatorze, na kartce zapisac tabelke.