제목 설명
30 진수까지의 길이는 음이 아닌 정수 출력은 이진수로 변환된다 자리.
기입
데이터 세트의 복수하게는 30 진수 음수 일 이상의 길이의 동작마다.
(참고 번호 대신 정수의 30 비트, 30 가질 수있는 십진수 있음)
수출
출력의 각 라인에 대응하는 이진수.
샘플 입력
985
211
1126
샘플 출력
1111011001
11010011
10001100110
#include <stdio.h>
#include <string.h>
int main()
{
char d[32];
int ans[100];
while(scanf("%s",d)!=EOF)
{
int sum=1,i=0,num[32],t,len=strlen(d);
for(int j=0; j<len; j++)
num[j]=d[j]-'0'; //将字符型数字转换为数字
while(sum)
{
sum=0; //用于进行循环,当所得的数剩1,除以2得0时结束
for(int j=0; j<len; j++)
{
t=num[j]/2;
sum+=t;
if(j==len-1) //如果是此数的最后一位,直接除二取余
ans[i++]=num[j]%2;
else
num[j+1]+=(num[j]%2)*10; //操作后得到的余数加上下一位数
num[j]=t; //得到商
}
}
for(int j=i-1; j>=0; j--) //逆向取余
printf("%d",ans[j]);
printf("\n");
}
return 0;
}
결과 :
구현 과정 :
예를 들어 23, NUM (2) (3)의 초기 배열은, NUM for 루프 후 11되고, ANS [0] = 1; NUM 나중에 사이클 0 5 길어져, ANS [1] = 1; NUM은 더 이상 사이클진다 0~2, ANS [2] = 1; NUM 나중에 사이클 0 1 ANS [3] = 0 길어져, NUM 나중에 사이클 0,0 ANS [4] = 1 이상이된다. 마지막 반전 출력 배열 ans와.