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

c++ themis szybkie potęgowanie

Object Storage Arubacloud
0 głosów
1,837 wizyt
pytanie zadane 5 czerwca 2017 w C i C++ przez Koper Początkujący (310 p.)

Witam!

Od jakiegoś czasu próbuję rozwiązać zadanie z serwisu themis.lo14.wroc.pl. Niestety w żaden sposób nie potrafię go zrobić. Mój kod, albo wykonuje się za wolno, albo wychodzą złe wyniki. W końcu użyłem gotowego rozwiązania z internetu wstawiając tylko dwie swoje linijki, ale niestety to też nie działa. Treść zadania:

Zadanie

Dla danych liczb a i b, t.że 0<=a, b<= 1'000'000'000, oblicz cztery ostatnie (najmniej znaczące) cyfry z liczby ab

Wejście: a b

Wyjście: Liczba powstała po odcięciu cyfr powyżej cyfry dziesięciu tysięcy z liczby ab

Przykład

Dla danych wejściowych: 2 3

poprawną odpowiedzią jest: 8

Dla danych wejściowych: 10 10

poprawną odpowiedzią jest: 0

A oto mój ostatni kod:

#include<iostream>
using namespace std;

long long pot_szybkie(long long a, unsigned int n)
{
  long long w = 1;

  while(n>0)
  {
    a%=10000;
    if (n%2 == 1) //jesli bit jest = 1
        w *= a;
    a*= a;
    n/=2; //skrócenie o jeden bit
  }
  w%=10000;
  return w;
}

int main()
{
  unsigned int n;
  long long a;
  cin>>a>>n;

  cout<<a<<" do potegi "<<n<<" wynosi "<<pot_szybkie(a, n);

  return 0;
}

Proszę o jakieś wskazówki.

 

1 odpowiedź

0 głosów
odpowiedź 5 czerwca 2017 przez niezalogowany
wybrane 5 czerwca 2017 przez Koper
 
Najlepsza

Zamiast long long lepiej byłoby skorzystać uint64_t, ponieważ na różnych systemach finalna zmienna może różnie wyglądać (np long long w domyśle powinna być 64 bitowa na widnowsie, ale np na linuxie jest nią już long). uint64_t zapewnia 64-bitowość zmiennej.

Prawdopodobnie output się nie zgadza ze spodziewanym bo jest niepotrzebny komunikat o tym jaka liczba jest podniesiona do jakiej potęgi

komentarz 5 czerwca 2017 przez Koper Początkujący (310 p.)
Niestety uint64_t nie działa na themis :/ błąd kompilacji. Natomiast moje rozwiązanie jest już bardzo blisko, jednak nadal coś nie pasuje. Nie mogę sprawdzić na których przykładach wywala złą odpowiedź, ale przechodzi 6 na 10 testów.
komentarz 5 czerwca 2017 przez Koper Początkujący (310 p.)
Zadanie rozwiązane, dziękuję za pomoc! :)
komentarz 7 października 2018 przez Crixu Nowicjusz (100 p.)
hejo.

Jak Ci sie udalo rozwiazac problem?

mozesz pomoc?

pozdr

Podobne pytania

0 głosów
2 odpowiedzi 508 wizyt
pytanie zadane 7 grudnia 2020 w C i C++ przez Nie Wiem Nowicjusz (240 p.)
0 głosów
1 odpowiedź 661 wizyt
pytanie zadane 23 sierpnia 2019 w C i C++ przez believer88 Nowicjusz (240 p.)
0 głosów
2 odpowiedzi 181 wizyt
pytanie zadane 4 czerwca 2017 w C i C++ przez Krystek102 Bywalec (2,440 p.)

92,551 zapytań

141,399 odpowiedzi

319,529 komentarzy

61,937 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!

...