//10进制转换为2进制
#include<iostream>
using namespace std;
struct Node
{
int data;
Node*next;
};
struct LinkStack
{
Node*top;
};
LinkStack*create()
{
LinkStack*stack = new LinkStack;
stack->top = NULL;
return stack;
}
bool isEmpty(LinkStack*stack)
{
return (stack->top == NULL);
}
void pop(LinkStack*stack)
{
if (!isEmpty(stack))
{
Node*p = stack->top;
stack->top = stack->top->next;
delete p;
}
}
void push(LinkStack*stack, int item)
{
Node*p = new Node;
p->data = item;
p->next = stack->top;
stack->top = p;
}
void top(LinkStack*stack)
{
cout << stack->top->data;
}
int main()
{
int n;
cin >> n;
LinkStack*stack = create();
while (n / 2 != 0)
{
push(stack, n % 2);
n = n / 2;
}
push(stack, n);
while (!isEmpty(stack))
{
top(stack);
pop(stack);
}
cout << endl;
delete stack;
return 0;
}