九度OJ 1080:进制转换 (进制转换)
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:4583
解决:1076
- 题目描述:
-
将M进制的数X转换为N进制的数输出。
- 输入:
-
输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。
- 输出:
-
输出X的N进制表示的数。
- 样例输入:
-
16 10
F
- 样例输出:
-
15
- 提示:
-
输入时字母部分为大写,输出时为小写,并且有大数据。
思路:
典型进制转换题,直接看代码就行。
需要做一个字符转数字的函数。
a-z分别代表10-35.
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h> #define M 1000 int iszero(char s[M], int n)
{
for (int i=0; i<n; i++)
{
if(s[i] != '0')
return 0;
}
return 1;
} int ctoi(char c)
{
if ('A' <= c)
return c-'A'+10;
else
return c-'0';
} char itoc(int i)
{
if (10 <= i)
return i-10+'A';
else
return i+'0';
} int main(void)
{
int m, n, i, k, left, flag;
char s1[M], s2[M];
int len1; while (scanf("%d%d%s", &m, &n, s1) != EOF)
{
len1 = strlen(s1);
k = 0;
flag = 0;
if (s1[0] == '-')
{
s1[0] = '0';
flag = 1;
}
if (iszero(s1, strlen(s1)))
{
printf("0\n");
continue;
}
while (! iszero(s1, len1))
{
left = 0;
for (i=0; i<len1; i++)
{
int tmp = left*m+ctoi(s1[i]);
left = tmp%n;
s1[i] = itoc(tmp/n);
}
//printf("left=%d\n", left);
s2[k++] = itoc(left);
}
s2[k] = '\0';
if (flag == 1)
printf("-");
for (i=strlen(s2)-1; i>=0; i--)
{
if ('A' <= s2[i])
s2[i] += 'a'-'A';
printf("%c", s2[i]);
}
printf("\n");
} return 0;
}
/**************************************************************
Problem: 1080
User: liangrx06
Language: C
Result: Accepted
Time:70 ms
Memory:912 kb
****************************************************************/
九度OJ 1080:进制转换 (进制转换)的更多相关文章
- 【九度OJ】题目1138:进制转换 解题报告
[九度OJ]题目1138:进制转换 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1138 题目描述: 将一个长度最多为30 ...
- 九度OJ 1194:八进制 (进制转换)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3521 解决:2058 题目描述: 输入一个整数,将其转换成八进制数输出. 输入: 输入包括一个整数N(0<=N<=100000 ...
- 九度OJ题目1208:10进制 VS 2进制 (JAVA)
题目描述: 对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们乘B为A的二进制逆序数. 例如对于十进制数173,它的二进制形式为10101101,逆序排列得到1 ...
- 九度oj 题目1208:10进制 VS 2进制
题目描述: 对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们乘B为A的二进制逆序数. 例如对于十进制数173,它的二进制形式为10101101,逆序排列得到10 ...
- 九度oj 题目1513:二进制中1的个数
题目描述: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 输入: 输入可能包含多个测试样例. 对于每个输入文件,第一行输入一个整数T,代表测试样例的数量.对于每个测试样例输入为一个 ...
- 【九度OJ】题目1080:进制转换 解题报告
[九度OJ]题目1080:进制转换 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1080 题目描述: 将M进制的数X转换为 ...
- 【九度OJ】题目1208:10进制 VS 2进制 解题报告
[九度OJ]题目1208:10进制 VS 2进制 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1208 题目描述: 对于一 ...
- 【九度OJ】题目1118:数制转换 解题报告
[九度OJ]题目1118:数制转换 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1118 题目描述: 求任意两个不同进制非 ...
- 【九度OJ】题目1194:八进制 解题报告
[九度OJ]题目1194:八进制 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1194 题目描述: 输入一个整数,将其转换 ...
随机推荐
- (6)centos安装和解压
一.rpm包安装方式步骤:1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录:2.打开一个终端,su -成root用户:3.cd soft.version.rpm所在的目录 ...
- Excel Sheet Column Title - LeetCode
Given a positive integer, return its corresponding column title as appear in an Excel sheet. For exa ...
- Hdoj 5181 numbers
numbers Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 196608/196608 K (Java/Others)Total ...
- 轻松加减你的NSDate值
废话不多,先上github链接:https://github.com/codegefluester/CGFDateModifier 然后上使用方法代码: NSDate *oneWeekFromNow ...
- Auto-Test 要点纪录(一)
1,select下拉框类型 使用工具可以看到html对应标签为<select>这类标签才是真正的下拉框类型就需要对应的方法,不能但看页面上的效果,有的做成了效果但其实不是select类型即 ...
- Scut游戏服务器引擎之新手入门
1. 开发语言:Scut提供C#或Python两种脚本语言开发,Python脚本的性能会比较差,建议使用编译执行的C#代码: 2. 运行平台:Scut可以Window与Linux平台上运行,Linux ...
- VS2010 MFC中 给菜单项添加消息响应函数
久了没用,居然忘记了该怎样给菜单项添加响应函数了~~~~~~~~T_T 特记于此: 1. 在资源视图的Menu里找到自己要添加的菜单,然后输入菜单项. 2. 右击菜单项选属性,设置Popup为Fals ...
- C++测试题练习题1
1.which of the following is not automatically generated by the compiler? a. default constructor b ...
- vue 监听 watch 使用
1.api https://cn.vuejs.org/v2/api/#watch 有2个配置: (1)深度 watcher deep: true(2)该回调将会在侦听开始之后被立即调用 immedia ...
- linux 内核(系统)、函数的理解、宏的程序调试
1.操作系统 1.1.Linux 内核(系统)的组成的部分: 内核主要有:进程调度.内存管理.虚拟文件系统.网络接口和进程通信五个部分组成. (1)进程调度 进程调度是CPU对多个进程对CPU访问的调 ...