当前位置: 首页 > news >正文

2019 ICPC 银川区域赛 - I Base62(大数+进制转换)

题目链接


题目大意

给你一个 x x x进制和一个 y y y进制 ( 2 ≤ x , y ≤ 62 ) (2 \leq x,y \leq 62) (2x,y62)和一个 x x x进制下的大数 z z z(最大可能是 6 2 1 20 62^120 62120)然后把 z z z转化为 y y y进制下数并输出。其中 ′ A ′ − ′ Z ′ 'A'-'Z' AZ分别表示 10 − 35 10-35 1035 ′ a ′ − ′ z ′ 'a'-'z' az分别表示 36 − 61 36-61 3661

解题思路

使用 J a v a Java Java直接写即可。题目让我误以为 A − z A-z Az A S C I I ASCII ASCII码是连续的,结果找了半天,才知道中间还隔着六个其他字符。除了这个卡了还有就是当 z z z 0 0 0的时候很明显就是 0 0 0

Java大数的可以参考我的博客

import java.math.BigInteger;
import java.util.Scanner;
import java.lang.StringBuffer;

public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n,m;
		String string;
		Scanner scanner = new Scanner(System.in);
		n=scanner.nextInt();
		m=scanner.nextInt();
		string=scanner.next();
		if(string.equals("0")) { //贼坑的特判
			System.out.println(0);
			return;
		}
		BigInteger bigInteger=BigInteger.ZERO,flag=BigInteger.ONE,K=BigInteger.valueOf(n);
		for(int i=string.length()-1;i>=0;i--) { //转化为十进制的大数
			int t;
			if(string.charAt(i)>='0' && string.charAt(i)<='9') {
				t=string.charAt(i)-'0';
			}else if(string.charAt(i)>='A' && string.charAt(i)<='Z')
				t=string.charAt(i)-'A'+10;
			else t=string.charAt(i)-'A'+4; //因为中间隔了六个其他字符,所以这里+10-6相当于+4
			//System.out.println(t);
			BigInteger num=BigInteger.valueOf(t);
			num=num.multiply(flag);
			bigInteger=bigInteger.add(num);
			flag=flag.multiply(K);
		}
		//System.out.println(bigInteger);
		String ans="";
		BigInteger v=BigInteger.valueOf(m);
		while(bigInteger.compareTo(BigInteger.ZERO)!=0) {
			BigInteger modInteger=bigInteger.mod(v);
			int res=Integer.valueOf(String.valueOf(modInteger));
			//System.out.println(res);
			if(res>=10) {
				res-=10;
				if(res<26)
					ans+=(char)('A'+res); //注意如果不加强转的话,进入字符串的会是ASCII码而不是字符
				else 
					ans+=(char)('A'+res+6);  //同上
			}else{
				ans+=res;
			}
			bigInteger=bigInteger.divide(v);
		}
		//String类没有反转操作,需要借助于StringBuffer或者StringBuilder
		StringBuffer sBuffer=new StringBuffer(ans);
		ans=sBuffer.reverse().toString();
		System.out.println(ans);	
	}
}

相关文章:

  • 【Android笔记】Activity不同状态间转换研究
  • UVa 11988 悲剧文本(四种方法)
  • 旁观者看eBay技术发展
  • UVa12657 Boxes in a Line (数组模拟双向链表)
  • 网站架构相关PPT、文章整理(更新于2009-7-15)
  • UVa679 Dropping Balls (满二叉树+开关灯思想)
  • UVa 548 Tree(建树+DFS)
  • Android开发指南-框架主题-安全和许可
  • UVa 699 The Falling Leaves(建树+求竖直权值和)
  • Widget带来了真正的移动互联网
  • 2019 ICPC 徐州区域赛 - C <3 numbers(素数密度)
  • 2019 ICPC 徐州区域赛 - A Cat(异或性质)
  • 2019 ICPC 南昌区域赛 - C And and Pair(思维+组合数学)
  • Android开发指南-框架主题-清单文件
  • 2019 ICPC 南昌区域赛 - G Eating Plan(技巧+暴力)
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 2017届校招提前批面试回顾
  • android 一些 utils
  • css选择器
  • ECMAScript6(0):ES6简明参考手册
  • HTTP--网络协议分层,http历史(二)
  • mockjs让前端开发独立于后端
  • mysql常用命令汇总
  • Nodejs和JavaWeb协助开发
  • RxJS: 简单入门
  • 大数据与云计算学习:数据分析(二)
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 开源SQL-on-Hadoop系统一览
  • 理清楚Vue的结构
  • 目录与文件属性:编写ls
  • 思维导图—你不知道的JavaScript中卷
  • 王永庆:技术创新改变教育未来
  • 一个JAVA程序员成长之路分享
  • 移动端 h5开发相关内容总结(三)
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 白色的风信子
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • gunicorn工作原理
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #每天一道面试题# 什么是MySQL的回表查询
  • #预处理和函数的对比以及条件编译
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (汇总)os模块以及shutil模块对文件的操作
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET Core WebAPI中封装Swagger配置