洛谷 B2161:十进制转二进制 ← 字符串 / 栈 / vector
发布时间:2026/10/24 5:15:45 锦皓数字建站

【题目来源】https://www.luogu.com.cn/problem/B2161【题目描述】给定一个十进制整数 n请将其转换为对应的二进制表示并输出。【输入格式】输入包含一行一个整数 n。【输出格式】输出一行表示整数 n 的二进制表示不含前导零。【输入样例二】10【输出样例二】1010【数据范围】0≤n≤2^31-1。提示n0 的情况需要特殊考虑。【算法分析】● 使用 C STL 中的stack实现进制转换的核心思路是利用栈“先进后出”的特性。● 提示n0 的情况需要特殊考虑。● 此题代码与“东方博宜OJ 1108”的代码一模一样https://blog.csdn.net/hnjzsyjyj/article/details/158432409【算法代码一string】#include bits/stdc.h using namespace std; int main() { string s; int n; cinn; if(n0) s0; while(n) { s(n%20); n/2; } reverse(s.begin(),s.end()); couts; return 0; } /* in:100 out:1100100 */【算法代码二栈】#include bits/stdc.h using namespace std; stackint stk; int n; int main() { cinn; if(n0) cout0; while(n) { stk.push(n%2); n/2; } while(!stk.empty()) { coutstk.top(); stk.pop(); } return 0; } /* in:100 out:1100100 */【算法代码三vector】#include bits/stdc.h using namespace std; vectorint v; int n; int main() { cinn; if(n0) cout0; while(n) { v.push_back(n%2); n/2; } for(int iv.size()-1; i0; i--) { coutv[i]; } return 0; } /* in:100 out:1100100 */【参考文献】https://blog.csdn.net/hnjzsyjyj/article/details/158432409https://blog.csdn.net/hnjzsyjyj/article/details/149136573https://blog.csdn.net/hnjzsyjyj/article/details/146247521
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。