Witam.
Od 2 dni walczę z tym banalnym programem i niestety poległem. Czy mógłbym liczyć na jakąś podpowiedź?
Poniżej kod:
int main()
{
int a,b,D;
unsigned long long wynik;
do
{
cin>>D;
}
while (D<1 || D>10);
for (int k=0 ; k<D ; k++)
{
cin>>a;
cin>>b;
if (b==0)
{
wynik=1;
}
else if ((a%10==0) || (a%10==1) || (a%10==5) || (a%10==6))
{
wynik=a;
}
else
{
wynik=1;
for (int i=0 ; i<b ; i++)
{
wynik*=a;
}
}
cout<<wynik%10<<endl;
}
return 0;
}
SPOJ wywala błąd związany z limitem czasowym.
Każda podpowiedź będzie na wagę złota.
Z góry dziękuję.
Myślę, że @mariusz193 ma rację. W szczególności posty jasno sugerują, że masz mieć O(1).
Witam,
Napisalem taki oto kod:
#include
#include
using namespace std;
int main()
{
int n;
long long int x;
cin>>n;
int *l = new int[n];
int *w = new int[n];
for(int i=0;i<n;i++)
cin>>l[i]>>w[i];
for(int i=0;i<n;i++){;
x=pow(l[i],w[i]);
cout<<"x: "<<x<<endl;
cout<<x%10<<endl;
}
return 0;
}
Mogby mi ktos powiedziec dlaczego po wpisaniu danych 1 33 4 moj x wynosi 1185920 a nie 1185921?
SPOJ zaakceptował mi rozwiązanie tego problemu, a tymczasem wiem, że mój kod daje błędny rezultat w Code::Blocks dla niektórych potęg liczb kończących się na 5 (np.: dla 5^2, 5^3, 5^5 daje ostatnią liczbę 4, a dla 5^1 daje 5). Z czego niepoprawny wynik podawany przez codeblocks może wynikać? Kod wydaje się dobry i dla wszystkich innych przypadków daje dobre rezultaty.
Witam , robiac wlasnie to zadanie napotkalem pewien problem
moj kod na ideone: https://ideone.com/WCsQWu9
A mianowicie , dla 3 potergi liczby 5 wychodzi mi wynik 124 , ktos ma pomysl dlaczego?
Witam proszę o podpowiedź jak zrobić modulo z liczby wpisanej jako double.
Jeżeli zmienię na inta to 5 do 2 daje mi jako 24 a to zły wynik.
Sam wpadłem na to że daną trzeba zmienić na double ale w tedy niestety modulo nie chce mi
liczyć. Proszę o jakieś sugestie co zrobić. Mój kod:
#include
#include
#include
using namespace std;
double a, b, wynik, ile;
int main()
{
cin>>ile;
for (int i=0; i<=ile; i++)
{
cin>>a>>b;
wynik=pow(a,b);
cout<<wynik % 10;
}
return 0;
}
Pomocny miły i sugestywny panie mariusz193 dziękuje bardzo za życzliwość i nie ocenioną pomoc w rozwiązaniu mojego problemu i zapewne nieocenionej pomocy udzielonej innym osobom starającym się zrozumieć podstawy programowania.
Jak już wspominałem wcześniej moim problemem nie jest to, że wyskakuje 24 bo ten problem już rozwiązałem przez dodanie danych w formie double.
Problem mam z tym, że funkcja modulo nie działa mi przy danych w tej formie. ;(
I tu rodzi się moje pytanie czy jakoś można można to obejść.
Każda rada oprócz “i tak nie mam zamiaru odpowiadać po raz kolejny na to samo pytanie” będzie pomocna.
Jeżeli znajduje pan czas na pisanie takiego typu bez użytecznych informacji to ma pan za dużo czasu xp
Wątek przejrzałem i nie znalazłem niczego pomocnego.