九度OJ 1138:进制转换 (进制转换)
2024-08-23 22:48:26
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:2388
解决:935
- 题目描述:
-
将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。
- 输入:
-
多组数据,每行为一个长度不超过30位的十进制非负整数。
(注意是10进制数字的个数可能有30个,而非30bits的整数)
- 输出:
-
每行输出对应的二进制数。
- 样例输入:
-
0
1
3
8
- 样例输出:
-
0
1
11
1000
思路:
并不难的进制转换题,注意0的处理。
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h> #define LEN 30
#define I 9
#define N ( (LEN%I > 0) ? (LEN/I+1) : (LEN/I) )
#define M (I*N) int divide2(int *a)
{
int i, result;
for (i=0; i<N; i++)
{
//printf("=======a[%d] = %d\n", i, a[i]);
if (i < N-1)
a[i+1] += (a[i] % 2) * pow(10, I);
else
result = a[i] % 2;
a[i] /= 2;
//printf("=======a[%d] = %d\n", i, a[i]);
}
return result;
} int isZero(int *a)
{
int i, iszero = 1;
for (i=0; i<N; i++)
{
if (a[i] != 0)
{
iszero = 0;
break;
}
}
return iszero;
} int main(void)
{
int a[N];
char s[M+1], s2[M*4+1], tmpInt[I+1];
int i, len; while (scanf("%s", s) != EOF)
{
len = strlen(s);
for (i=len-1; i>=0; i--)
s[M-len+i] = s[i];
for (i=0; i<M-len; i++)
s[i] = '0';
s[M] = '\0';
//printf("s = %s\n", s); for (i=0; i<N; i++)
{
strncpy(tmpInt, s+i*I, I);
tmpInt[I] = '\0';
//printf("tmpInt = %s\n", tmpInt);
a[i] = atoi(tmpInt);
//printf("a[%d] = %d\n", i, a[i]);
} i=0;
do
{
s2[i++] = divide2(a)+'0';
//for (int j=0; j<N; j++)
// printf("a[%d] = %d\n", j, a[j]);
//printf("iszero = %d\n", isZero(a));
} while (!isZero(a));
s2[i] = '\0'; len = strlen(s2);
for (i=len-1; i>=0; i--)
printf("%c", s2[i]);
printf("\n");
} return 0;
}
/**************************************************************
Problem: 1138
User: liangrx06
Language: C
Result: Accepted
Time:90 ms
Memory:920 kb
****************************************************************/
最新文章
- ELF静态链接
- 如何在网页中嵌套其他的HTML文件
- midi格式
- DOM - 5.事件冒泡 + 6.事件中的this
- hdu5432 二分
- (转)create table #temptable 临时表 和 declare @bianliang table ()表变量
- convert2Mp4 code snippet
- Windows计算机功能Java源码
- AngularJS(5)-Http
- LoadRunner脚本优化之—参数化迭代介
- v4l2简介
- Bitbucket Pull Request和fork
- R6010 -abort() has been called错误分析及其解决方法
- Java程序执行Linux命令
- C#中IList<;T>;与List<;T>;的区别
- UVa 496 - Simply Subsets
- block循环饮用解决
- hdu_1017(水水水,坑格式)
- popstate事件在低版本webkit中的调用
- SNF软件开发机器人-子系统-导出-导入功能-多人合作时这个功能经常用到