• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

jak z liczby większej niż jedno cyfrowa wyrzucić na ekran tylko cyfrę jedności ?

Object Storage Arubacloud
0 głosów
438 wizyt
pytanie zadane 3 sierpnia 2016 w C i C++ przez Banach Nowicjusz (200 p.)

Otóż jest to zadanie ze SPOJ'a , czy umiesz potęgować ? Akurat po 13 odcinku tutorialu C++ ( rekurencja ) wziąłem to zadanie bo wydawało się dosyć łatwe. Problem polega na tym że nie wiem jak wyrzucić na ekran cyfrę jedności ? Np. z 2^5 jak wyrzucić na ekran samą 2. Pomysł mam bardzo prosty, zauważyłem że gdy daną liczbę podnosimy do danej potęgi to cyfra jedności się powtarza. Np. 4,16,64,256,1024 i mam na zmianę 4,6,4,6.. tylko jak to dopisać do mojego kodu ? Zależy mi na prostym i zrozmiałym dla mnie zapisie bo jestem wciąż amatorem. Z góry dziękuję !

#include <iostream>

using namespace std;

int liczba_testow,w,p,wynik=1;

int main()
{
    cin>>liczba_testow;

    for(int i=0; i<liczba_testow; i++)
    {
        cin>>p>>w;

        while(w>0)
        {
            wynik=wynik*p;
            w--;
        }

        cout<<wynik<<endl;
        wynik=1;
    }

    return 0;
}

 

2 odpowiedzi

+2 głosów
odpowiedź 3 sierpnia 2016 przez MetRiko Nałogowiec (37,110 p.)
Słyszałeś o modulo? Tzw. reszta z dzielenia.
W c++ zapisywane jest przy pomocy znaku procenta (%).
10%2 jest równe 0 (reszta z dzielenia 10 przez 2 daje 0)
15%4 jest równe 3 (reszta z dzielenia 15 przez 4 daje 3)
itd.
A teraz jeżeli masz do czynienia z jakąś liczbą (całkowitą) X to jej cyfra jest równa reszcie z dzielenia tej liczby przez 10 x)
Przykładowo:
792534%10=4,
15127%10=7,
8590%10=0,
732%10=2,
5%10=5
itd.
komentarz 3 sierpnia 2016 przez Banach Nowicjusz (200 p.)

Dziękuję bardzo. Teraz mam poprawnie tylko sędzia pokazuje mi że przekroczyłem limit czasu, wiesz może gdzie leży błąd ? Wydaje mi się że w pętli while. Dopisałem tylko to

if(wynik>10)
    {
        cout<<wynik%10;
    }
    else
    {
        cout<<wynik;
    }

 

komentarz 3 sierpnia 2016 przez MetRiko Nałogowiec (37,110 p.)
Pozwól, że ci podpowiem..
To zadanie da się rozwiązać podnosząc do potęgi tylko same cyfry. Powiem więcej.. tutaj nawet nie musisz stosować potęgowania xD
komentarz 3 sierpnia 2016 przez bimbrownik Mądrala (5,180 p.)
Powinno być if(wynik>=10), bo z dziesiątki też musisz wyznaczyć ostatnią cyfrę.
komentarz 3 sierpnia 2016 przez MetRiko Nałogowiec (37,110 p.)

Zero to też cyfra x)
Tak więc dziesiątkę można zastąpić zerem.. jedyny problem pojawia się przy potędze 0 do 0, jednak nie musimy się tym martwić.. ponieważ w treści zadania zakres jest dokładnie określony:
"(1 ≤ a,b ≤ 1 000 000 000)."
Link: http://pl.spoj.com/problems/PA05_POT/

0 głosów
odpowiedź 3 sierpnia 2016 przez Avernis Nałogowiec (27,400 p.)
Podzielić i wypisać jako inta
komentarz 3 sierpnia 2016 przez Banach Nowicjusz (200 p.)
pomożesz mi z odopwiednią komendą ?

Próbuję z czymś takim

if ( wynik > 9 ) tylko jak zapisać dalej ?
komentarz 3 sierpnia 2016 przez Avernis Nałogowiec (27,400 p.)
Nie, zapomnij. Źle ci podałem, źle przeczytałem. Myślałem że tam chodzi o 1 cyfrę. Mój błąd
komentarz 3 sierpnia 2016 przez Banach Nowicjusz (200 p.)
Nic nie szkodzi ! Wiesz może jak zaradzić na przekroczony limit czasu ? Taki mam komunikat od sędziego. Czy petla while jest zła ?
komentarz 3 sierpnia 2016 przez Avernis Nałogowiec (27,400 p.)
Niestety nie wiem. Sam nigdy nie korzystałem z spoja. OpenGL jest dla mnie wystarczający :D

Podobne pytania

0 głosów
2 odpowiedzi 169 wizyt
pytanie zadane 23 lipca 2016 w C i C++ przez Banach Nowicjusz (200 p.)
0 głosów
2 odpowiedzi 360 wizyt
0 głosów
2 odpowiedzi 1,204 wizyt
pytanie zadane 6 sierpnia 2016 w C i C++ przez Adam Olesiak Gaduła (3,290 p.)

92,631 zapytań

141,498 odpowiedzi

319,869 komentarzy

62,011 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...