Z góry uprzedzam, że przedstawiony tutaj sposób nie przejdzie na Athinie, gdyż Pan Duraj z pewnością odbije takie zadanie ręcznie, użyjemy w nim bowiem sposoby "sprytnego" - żeby się za dużo nie naklepać.
Celem tego tematu jest pokazanie szybkiego sposoby na tego typu problemu osobom, które go jeszcze nie znają.
- Co poznamy?? Funkcję itoa()
No to lecimy, kodzik wygląda tak:
#include <iostream> using namespace std; int main() { int z, n; char tab[30]; cin >> z; for (int i=0; i<z; i++) { cin >> n; itoa(n, tab, 2); cout << tab << endl; } }
Jak to działa?? Ano mamy funkcję itoa() - ang. integer to ascii - zamiana liczby na znaki. Jak ona działa?? Potrzebna nam liczba, tablica char to której zapiszemy zamienioną liczbę i tyle.
Używamy tego w ten sposób:
itoa(liczba_ktora_zamieniamy, tablica_do_ktorej_zapiszemy_zamienioną_liczbę, system_liczbowy);
Tak więc itoa(n, tab, 5) zapisze liczbę n do tablicy tab w systemie piątkowym ;)
[Lech Duraj] O ile mi wiadomo, ten kod dostaje CME - funkcji itoa nie ma w standardzie C++. W szczególności nie zna jej kompilator Athiny.
Wzorcówka
Tak wyglądała wzorcówka do tego zadania:
#include <cstdio>
void binary(int x)
{
if (x==0) return;
binary(x/2);
printf("%d",x%2);
}
int main()
{
int TT,n;
scanf("%d",&TT);
while(TT--)
{
scanf("%d",&n);
if (n==0)
printf("0\n");
else
{
binary(n);
printf("\n");
}
}
}