长见识了呀,第一次遇到这种规模的进制转换,嗯,又增加了不少的知识。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const double pi=acos(-1.0);
const double eps=1e-8;
const int maxn=100005;
char q[205]; ///输入
char w[205]; ///输出
char mod(char q[]) ///模拟辗转相除法求出每一个余数
{
int len=strlen(q);
int tmp=0;
for(int i=0;i<len;i++)
{
int div=((q[i]-'0')+tmp*10)/2;
tmp=((q[i]-'0')+tmp*10)%2;
q[i]=div+'0';
}
return tmp+'0';
}
bool check(char q[]) ///判断数组是否已经全部除完
{
int len=strlen(q);
for(int i=0;i<len;i++)
{
if(q[i]!='0')
{
return 0;
}
}
return 1;
}
int main()
{
while(~scanf("%s",&q))
{
int cnt=0;
do
{
w[cnt++]=mod(q);
}while(!check(q));
w[cnt]='\0';
int len=strlen(w);
for(int i=cnt-1;i>=0;i--)
{
printf("%c",w[i]);
}
printf("\n");
}
}