题目: 当十进制数,转为二进制时,求第几位为1(最右计第0位)。
例:输入13 1101 输出 023
13 1101 第0位是1
第2位是1
第3位是1
原理:假如题目是转二进制数的话,其实是对2取余,再除2,若余数为1则计1,否则计0。
本题原理相似,修改:若是1,则输出K,若是0,则不输出K。同时K++,这里K从0开始,表示第0位。
#include <iostream>
using namespace std;
void fun(int n)
{
int k = 0; //标记
while (n != 0)
{
if (n % 2 == 1)
cout << k;
n /= 2;
k++;
}
}
int main()
{
fun(13);
return 0;
}