Litery w liczbie szesnastkowej

0

Witam!
Mam następujący problem - mam liczbę w postaci dziesiętniej, mniejszą od tryliona. Mam powiedzieć, czy jeśli zamienić by tę liczbę na system szesnastkowy, to czy znajdowałyby się w jej zapisie litery. Myślałem, że wszystkie liczby dziesiętne większe równe 154 mają w systemie szesnastkowym literę, ale to chyba nieprawda, bo po napisaniu takiego kodu:

#include <iostream>

using namespace std;

int main()
{
    int N;
    cin >> N;
    while(N--)
    {
        string str;
        cin >> str;
        if(str.size() > 3)
            cout << "TAK\n";
        else if(str.size() == 3)
        {
            if(str[1] > '5' || (str[1] == '5' && str[2] > '3'))
                cout << "TAK\n";
            else
                cout << "NIE\n";
        }
        else if(str.size() < 3)
            cout << "NIE\n";
    }
    return 0;
} 

nie dostaję punktów.

Ktoś podpowie?
piternet

0

18764998447377 = 0x111111111111
Nie widzę liter.

0

A nie wystarczy wczytać liczbę, zamienić na szesnastkową, rzutować na string i sprawdzić czy znajduje się w nim litera (a,b,c,d,e,f)?

0

Podpowiedź na przyszłość: trylion jest liczbą wynoszącą 1018. Typ int nie utrzyma takiej liczby, gdyż może przetrzymywać liczby do ok. 2 * 109. Musisz użyć 64-bitowego typu long long.

0

Dobra, dzięki, ten trylion mnie zmylił i myślałem, że nie da rady tego na jakimkolwiek typie wbudowanym zrobić, dzięki raz jeszcze.

0

wszystkie liczby dziesiętne większe równe 154 mają w systemie szesnastkowym literę
Wow, ale ktoś ma fantazję... PS: gdzie jest to zadanie? Na SPOJu może?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.