[C++] SPOJ Czarodziejskie lusterko
Ostatnio zmodyfikowano 2019-12-17 21:27
Biedrzyk Temat założony przez niniejszego użytkownika  | 
[C++] SPOJ Czarodziejskie lusterko » 2019-12-16 21:16:26 Witam, właśnie walczę z zadaniem ze SPOJ-a https://pl.spoj.com/problems/AL_05_01/ Poniżej podam kod: #include <iostream>
  using namespace std;
  string naBinarna( unsigned long long int liczba ) {     string binar = "";     while( liczba > 0 )     {         binar +=( char )( liczba % 2 + 48 );         liczba /= 2;     }     return binar; } int main() {     unsigned long long int liczba;     string binar;          while( cin >> liczba )     {         unsigned long long int liczba2 = 0;         binar = naBinarna( liczba );         for( int j = 1, i = binar.length() - 1; i >= 0; --i, j *= 2 )         {             liczba2 +=( int ) binar[ i ] % 48 * j;         }         cout << liczba2 << endl;     }     return 0; }
  program działa praktycznie bez zarzutu do czasu kiedy sprawdzam liczbę 4294967297 powinienem dostać taką samą a tu dostaję 1 - ktoś może podpowiedzieć dlaczego? Pozdrawiam :)  | 
 | 
pekfos  | 
» 2019-12-16 22:29:32 Przekraczasz zakres  j. Musiałem wejść link, żeby się dowiedzieć o co w ogóle chodzi. To wystarczający powód, by z miejsca skasować temat.  Zakładanie tematów na forum | 
 | 
darko202  | 
» 2019-12-17 08:11:03 >> kiedy sprawdzam liczbę 4'294'967'297 powinienem dostać taką samą a tu dostaję 1 gdybyśmy użyli typu unsigned long int od 0 do 4'294'967'295 wynik wydawałby się zgodny z oczekiwaniem dlatego podejrzany jest użyty typ unsigned long long int od 0 do 18'446'744'073'709'551'615  na   https://en.cppreference.com/w/cpp/language/typesunsigned long long int  wprowadzony w (C++11)  stąd (może błędnie) wnioskuję, że użyty kompilator nie obsługuje standardu C++11 sprawdź czy np. dla  4'294'967'300 zwróci 4    | 
 | 
Biedrzyk Temat założony przez niniejszego użytkownika  | 
» 2019-12-17 21:27:08 Pekfos - faktycznie, nie doczytałem jak tworzyć nowy temat za co przepraszam. I dziękuję za podpowiedź - wogóle o tym nie pomyślałem ;) zmieniłem j na long long int i śmiga aż miło :)i dostałem AC :) darko 202 - dzięki za podpowiedź :)   | 
 | 
|  « 1 »  |