【九度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. jQuery ajax常用示例

    总结一下jQuery ajax常用示例 $.ajax({ type: "post", //类型get,post url: urls, //链接地址 data:{"id&q ...

  2. 巩固javaweb的第三十天

    显示用户输入信息 1 .代码 要想输出用户在上一个页面提交的信息,可以使用下面的代码: ${param.userid} ${param.username} ${param.userpass} ${pa ...

  3. JuiceFS 性能评估指南

    JuiceFS 是一款面向云原生环境设计的高性能 POSIX 文件系统,任何存入 JuiceFS 的数据都会按照一定规则拆分成数据块存入对象存储(如 Amazon S3),相对应的元数据则持久化在独立 ...

  4. A Child's History of England.23

    King William, fearing he might lose his conquest, came back, and tried to pacify the London people b ...

  5. 17. yum

    https://www.linuxidc.com/Linux/2015-04/116331.htm

  6. Hadoop 相关知识点(二)

    1.HDFS副本机制 Hadoopde 默认副本布局策略是: (1)在运行客户端的节点上放置第一个副本(如果客户端运行在集群之外,就随机选择一个节点,不过系统会避免选择那些存储太满或者太忙的节点): ...

  7. CSS相关,手画三角形,正方形,扇形

    三角形 实现一个三角形 <!DOCTYPE html> <html> <head> <title>三角形</title> <style ...

  8. 【leetcode】986. Interval List Intersections (双指针)

    You are given two lists of closed intervals, firstList and secondList, where firstList[i] = [starti, ...

  9. Linux_spool命令

    spool的作用是什么? spool的作用可以用一句话来描述:在sqlplus中用来保存或打印查询结果. 参数指南 对于SPOOL数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句如: ...

  10. entfrm开发平台,一个免费开源可视化的无代码开发平台

    简介 entfrm开发平台,是一个以模块化为核心的无代码开发平台,是一个集PC和APP快速开发.系统管理.运维监控.开发工具.OAuth2授权.可视化数据源管理与数据构建.API动态生成与统计.工作流 ...