题目
思路
十进制数13怎么转为二进制数。许多人都知道用13一直除以2,取余数,最后反向将余数组合起来。 首先它是转二进制,我们都知道二进制数是逢二进一,所以我们就看看13有多少个2是吧,于是就用13÷2得到6余1的结果,说明有6份2,余下的1不够2,所以没进,那当然这个1就是所求二进制数的个位了,此时的6已经是二进制数的属性了,其代表的十进制数为12,但是二进制数要逢二进一,所以没有6这个数,必须再用6÷2看看能进上去几份2,结果为3,没有给当下的位留下任何东西,那当然当下的位为0了,同理,进上去的3也为二进制数的属性,但二进制数里没3,只能进位,用3除以2结果为1余1,余下的1不够2流在本位,除下的1代表一个2进位,这个1不够2不用进位,于是所得二进制数为1101。(不断除以2,对二取模)
超过十进制,A,B......表示,“48”“55”是ascll码。
#include <bits/stdc++.h>
using namespace std;
int x,m,s;
int a[10000005];void dfs(int num,int step)
{if(num<m){a[step]=num;s=step;return;}int i=num%m;a[step]=i;int j=num/m;dfs(j,step+1);
}int main()
{cin>>x>>m;dfs(x,1);for(int i=s;i>=1;i--){if(a[i]<=9){cout<<char(a[i]+48);}else{cout<<char(a[i]+55);}}return 0;
}