nyoj 275-队花的烦恼一 (stack, push, pop)
275-队花的烦恼一
内存限制:64MB
时间限制:3000ms
特判: No
通过数:11
提交数:14
难度:1
题目描述:
ACM队的队花C小+经常抱怨:“C语言中的格式输出中有十六、十、八进制输出,然而却没有二进制输出,哎,真遗憾!谁能帮我写一个程序实现输入一个十进制数n,输出它的二进制数呀?”
难道你不想帮帮她吗?^_^
输入描述:
输入有多个数据,数据以EOF结束;每个数据ni(0<=ni<=1000010000)用空格隔开; (温馨提示:EOF即是一个文件的结束标志;while(scanf("%d",&n)!=EOF){})
输出描述:
输出有多行,每行对应一个十进制数ni的二进制数; 注意:输出的二进制去掉任何一个多余的0;
样例输入:
0 1 2 10
样例输出:
0 1 10 1010
C/C++ AC:
1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 #include <cstdio> 5 #include <cmath> 6 #include <stack> 7 #include <set> 8 #include <map> 9 #include <queue> 10 #include <climits> 11 #define PI 3.1415926 12 13 using namespace std; 14 const int MY_MAX = 1010; 15 int N; 16 17 int main() 18 { 19 while (~scanf("%d", &N)) 20 { 21 if (N == 0) 22 { 23 printf("0\n"); 24 continue; 25 } 26 stack <int> my_stack; 27 while (N) 28 { 29 my_stack.push(N % 2); 30 N /= 2; 31 } 32 while (!my_stack.empty()) 33 { 34 printf("%d", my_stack.top()); 35 my_stack.pop(); 36 } 37 printf("\n"); 38 } 39 }