【九度OJ】题目1118:数制转换 解题报告

标签(空格分隔): 九度OJ


原题地址:http://ac.jobdu.com/problem.php?pid=1118

题目描述:

求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。
不同进制的表示符号为(0,1,…,9,a,b,…,f)或者(0,1,…,9,A,B,…,F)。

输入:

输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。
数据可能存在包含前导零的情况。

输出:

可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,…,9,A,B,…,F)。

样例输入:

15 Aab3 7

样例输出:

210306

Ways

每次都会因为一些细节出错,本题中,注意判断法按时都是以带有等号的,最后输出时别忘了加上0的ASCii,最后,注意数组是char,应该以%c形式输出。

进制之间的转换,首先转换成10进制,再转换成任意进制。转换成10进制的时候,注意,对于A-Z的表示的数字的转换,使用ASCII码的形式转换。

另外在转换过程中,一定要注意数字的正序和倒序等等问题,防止出错。

另外发现java的版本很方便啊,以后数制转换就用Java了哈哈哈。

#include <stdio.h>
#include <string.h> int main() {
int a, b;
char n[20];
while (scanf("%d%s%d", &a, n, &b) != EOF) {
//任意进制转10进制
int len = strlen(n);
int trans = 0;
for (int i = 0; i < len; i++) {
int x = 0;
if (n[i] >= '0' && n[i] <= '9') {//都有等于号
x = n[i] - '0';
} else if (n[i] >= 'a' && n[i] <= 'z') {
x = 10 + n[i] - 'a';
} else if (n[i] >= 'A' && n[i] <= 'Z') {
x = 10 + n[i] - 'A';
}
trans = a * trans + x;
}
//下面10进制转成任意进制
int temp = trans;
char ans[20];
int size = 0;
do {
int end = temp % b;
ans[size++] = (end >= 10) ? (end - 10 + 'A') : (end + '0');
//加上0的ASCII
temp /= b;
} while (temp > 0);
for (int i = size - 1; i >= 0; i--) {
printf("%c", ans[i]);//以字符形式输出,不是整数
}
printf("\n");
} return 0;
}

写了个通用的change函数,利用BigInteger类可以轻松的实现数制转换。,就是BigeIteger.toString(to)方法。

这个题目中因为要求最终结果是大写字母,所以使用了toUpperCase(),否则默认的是小写字母。

import java.util.*;
import java.math.*; public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String line = scanner.nextLine();
String[] params = line.split(" ");
System.out.println(change(params[1],
Integer.parseInt(params[0]),
Integer.parseInt(params[2])));
}
}
//num 要转换的数 from源数的进制 to要转换成的进制
private static String change(String num, int from, int to) {
return new BigInteger(num, from).toString(to).toUpperCase();
}
}

Date

2017 年 3 月 6 日

【九度OJ】题目1118:数制转换 解题报告的更多相关文章

  1. 九度OJ 题目1384:二维数组中的查找

    /********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...

  2. hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  3. 九度oj题目&amp;吉大考研11年机试题全解

    九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码).    http://ac.jobdu.com/problem.php?pid=11 ...

  4. 九度oj 题目1007:奥运排序问题

    九度oj 题目1007:奥运排序问题   恢复 题目描述: 按要求,给国家进行排名. 输入:                        有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...

  5. 九度oj 题目1087:约数的个数

    题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...

  6. 九度OJ题目1105:字符串的反码

    tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...

  7. 九度oj题目1009:二叉搜索树

    题目描述: 判断两序列是否为同一二叉搜索树序列 输入:                        开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...

  8. 九度oj题目1002:Grading

    //不是说C语言就是C++的子集么,为毛printf在九度OJ上不能通过编译,abs还不支持参数为整型的abs()重载 //C++比较正确的做法是#include<cmath.h>,cou ...

  9. 九度OJ题目1003:A+B

    while(cin>>str1>>str2)就行了,多简单,不得不吐槽,九度的OJ真奇葩 题目描述: 给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号", ...

随机推荐

  1. Notepad++—显示代码对齐是使用了制表符还是空格

    使用Notepad++打开脚本,勾选"显示空格与制表符",此时你会看到代码对齐使用了制表符与空格 右箭头:TAB:空格:点: 参考:https://www.cnblogs.com/ ...

  2. Python—python2.7.5升级到2.7.14或者直接升级到3.6.4

    python2.7.5升级到2.7.14 1.安装升级GCC yum install -y gcc* openssl openssl-devel ncurses-devel.x86_64  bzip2 ...

  3. 深入浅出KMP

    前言:曾经有次在阿里的面试中遇到这个基础的问题,当时知道有这么回事,可是时间久了便 想不起来,可能是不怎么用到,基本调用库什么的,还有个是理解不深刻,不能得到show me the code 的程度, ...

  4. Python中的随机采样和概率分布(二)

    在上一篇博文<Python中的随机采样和概率分布(一)>(链接:https://www.cnblogs.com/orion-orion/p/15647408.html)中,我们介绍了Pyt ...

  5. Oracle中的null与空字符串''的区别

    含义解释:问:什么是NULL?答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零.ORACLE允许任何一种数据类型的字段为空,除了以下 ...

  6. zabbix之监控面试

    先用shell脚本把值取出来,然后重启agent,在server端用zabbix-get命令测试一下,看能不能通过userparameter指定的可以将值取出来,如果没问题,在在网页创建模板,加监控项 ...

  7. Java设计模式—Proxy动态代理模式

    代理:设计模式 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理. 图 1. 代 ...

  8. 【编程思想】【设计模式】【结构模式Structural】front_controller

    Python版 https://github.com/faif/python-patterns/blob/master/structural/front_controller.py #!/usr/bi ...

  9. 【Linux】【Basis】网络

    Linux网络属性配置                           计算机网络:          TCP/IP:协议栈(使用)             ISO,OSI:协议栈(学习)     ...

  10. VectorCAST软件自动化测试方案

    VectorCAST 是主要用于对C/C++/Ada程序进行软件自动化测试,并能够在Windows和Linux等多种开发环境下运行.其主要功能包含自动化的单元测试.集 成测试.覆盖率分析.回归测试.代 ...