【九度OJ】题目1118:数制转换 解题报告
【九度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:数制转换 解题报告的更多相关文章
- 九度OJ 题目1384:二维数组中的查找
/********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...
- hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 九度oj题目&吉大考研11年机试题全解
九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码). http://ac.jobdu.com/problem.php?pid=11 ...
- 九度oj 题目1007:奥运排序问题
九度oj 题目1007:奥运排序问题 恢复 题目描述: 按要求,给国家进行排名. 输入: 有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...
- 九度oj 题目1087:约数的个数
题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...
- 九度OJ题目1105:字符串的反码
tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...
- 九度oj题目1009:二叉搜索树
题目描述: 判断两序列是否为同一二叉搜索树序列 输入: 开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...
- 九度oj题目1002:Grading
//不是说C语言就是C++的子集么,为毛printf在九度OJ上不能通过编译,abs还不支持参数为整型的abs()重载 //C++比较正确的做法是#include<cmath.h>,cou ...
- 九度OJ题目1003:A+B
while(cin>>str1>>str2)就行了,多简单,不得不吐槽,九度的OJ真奇葩 题目描述: 给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号", ...
随机推荐
- 【GS模型】全基因组选择之rrBLUP
目录 1. 理论 2. 实操 2.1 rrBLUP包简介 2.2 实操 3. 补充说明 关于模型 关于交叉验证 参考资料 1. 理论 rrBLUP是基因组选择最常用的模型之一,也是间接法模型的代表.回 ...
- Linux学习——Gdb基本调试方法&&多线程调试
1.Gdb的基本调试 示例代码 //e.c #include <stdio.h> void debug(char *str) { printf("debug info :%s\n ...
- Hive(三)【DDL 数据定义】
目录 一.DDL数据定义 1.库的DDL 1.1创建数据库 1.2查询数据库 1.3查看数据库详情 1.4切换数据库 1.5修改数据库 1.6删除数据库 2.表的DDL 2.1创建表 2.2管理表(内 ...
- 商业爬虫学习笔记day7-------解析方法之bs4
一.Beautiful Soup 1.简介 Beautiful Soup 是python的一个库,最主要的功能是从网页抓取数据.其特点如下(这三个特点正是bs强大的原因,来自官方手册) a. Beau ...
- python做一个http接口测试框架
目录结构 project case#测试用例 suite#测试目录 logs#测试日志 papi#测试类 result#测试结果 setting.py#配置文件 1.日志类,用于测试时日志记录 pya ...
- Linux上用Jexus部署Asp.Net网站:常规部署与Docker部署
(一)常规部署 一.把 jexus压缩包下载到linux临时文件夹中. cd /tmp wget linuxdot.net/down/jexus-6.2.x-arm64.tar.gz (不同的操作系统 ...
- Linux脚本教程
Linux_Shell_脚本参数接收键盘输入 #!/bin/bash #提示"请输入姓名"并等待30秒,把用户的输入保存入变量name中 read -t 30 -p "请 ...
- 基于注解的方式搭建mybatis开发框架
1.创建工程 <groupId>com.hope</groupId> <artifactId>day01_eesy_01mybatis</artifa ...
- Spring Boot项目的探究
一.pom.xml文件 1.父项目 <parent> <groupId>org.springframework.boot</groupId> <artifac ...
- 【Python】CV2的一些基本操作
·导入: import cv2 ·读取图片: img = cv2.imread('路径') 使用函数cv2.imread(filepath,flags)读入一副图片 filepath:要读入图片的完整 ...