今天分享的是东方博宜 T1108 - 正整数N转换成一个二进制数,C++的解题方法。
【题目描述】
/*
题目描述
输入一个不大于 3276732767 的整数 nn ,将它转换成一个二进制数。
输入
输入只有一行,包括一个整数 nn (0 \le n \le 327670≤n≤32767)。
输出
输出只有一行。
样例
输入:
100
输出复制:
1100100
输入:
0
输出:
0
*/
【解题思路】
/*
本题考察的十进制转化成二进制的方法
很简单,就是不断的模2,得到的结果反序组合就可以了
例如8 ,转化成二进制的过程为
8 / 2 = 4 ...... 0
4 / 2 = 2 ...... 0
2 / 2 = 1 ...... 0
1 / 2 = 0 ...... 1
倒序取余数,得到答案
所以本题也适合用递归的方法来做
*/
【参考代码】
#include <bits/stdc++.h>
using namespace std;
string fun(int n){
if (n / 2 == 0){
return to_string(n % 2);
}else{
return fun(n / 2) + to_string(n % 2);
}
}
int main() {
int n;
cin >> n;
cout << fun(n) << endl;
return 0;
}