I-Base62
I - Base62
PS:一个任意进制转换的大数问题
传送门:Base62
短除法原理:
20(10进制) => 202(3进制)
20 = (2 * 3 ^ 2 + 0 * 3 ^ 1 + 2 * 3 ^ 0)
20 / 3 = 6 ......2 -> 2 * 3 ^ 0
6 / 3 = 2 .......0 -> 0 * 3 ^ 1
2 / 3 = 0 .......2 -> 2 * 3 ^ 2
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
int main()
{
int a, b;
string a_line, b_line;
cin >> a >> b >> a_line;
vector<int> number;
for(auto c: a_line)
{
if(c >= '0' && c <= '9') number.emplace_back(c - '0');
if(c >= 'A' && c <= 'Z') number.emplace_back(c - 'A' + 10);
if(c >= 'a' && c <= 'z') number.emplace_back(c - 'a' + 36);
}
reverse(number.begin(), number.end());
vector<int> res;
while(number.size())
{
int r = 0; //上一位的余数
// 每循环一次做一次短除法
for (int i = number.size() - 1; i >= 0; i --)
{
// 每个位置上处理前都是上一位的余数乘以进制数加上当前位上的数(注意进制为a)
number[i] += r * a;
// 这个位置上的余数为当前位置上的数除以b作为b进制的数
r = number[i] % b;
// 处理完后b进制的i位数
number[i] /= b;
}
res.emplace_back(r);
while(number.size() && number.back() == 0) number.pop_back();
}
reverse(res.begin(), res.end());
for(auto x : res)
{
if(x <= 9) b_line += char(x + '0');
if(x >= 10 && x <= 35) b_line += char(x - 10 + 'A');
if (x >= 36) b_line += char(x - 36 + 'a');
}
cout << b_line;
return 0;
}
如果懒得注册账号,这里有个几乎一模一样的题目
宣传一波Acwing :Acwing124.数的转换
后面有时间会补上Java大数的解法(等我学一波(* ̄3 ̄)╭)
I-Base62的更多相关文章
- Base62编码与62进制
Base62编码 Base62编码与Base64编码类似,都用于数据内容编码.基本原理请参看<Base64算法>. import java.io.ByteArrayOutputStream ...
- Golang 之 Base62 编码
Base62 编码用62个可见字符来编码信息,也就是所谓的62进制,可用于缩短地址之类的.实现起来也很简单.当然,这个实现跟别人家的有可能不一样,反正自己能编能解就行. package main im ...
- Base系列编码浅析【base16 base32 base64 base85 base36 base 58 base91 base 92 base62】
Base系列编码浅析 [base16 base32 base64 base85 base36 base 58 base91 base 92 base62] base编码 ...
- 巧用 Base62 解决字段太短的问题
最近银联一纸 259 号改造通知,所有支付机构开始改造支付交易,上传终端信息. 不知道其他支付机构的小伙伴针对这次改造是否开始了? 由于这次银联给的时间非常少,我们这边改动涉及到相关上游一起改造,所以 ...
- JAVA和PYTHON同时实现AES的加密解密操作---且生成的BASE62编码一致
终于有机会生产JAVA的东东了. 有点兴奋. 花了一天搞完.. java(关键key及算法有缩减): package com.security; import javax.crypto.Cipher; ...
- base62与long的相互转换
public static class Converter { private static String keys = "0123456789abcdefghijklmnopqrstuvw ...
- icpc 银川 I. Base62 任意进制的转换 短除法
Problem Description As we already know, base64 is a common binary-to-text encoding scheme. Here we d ...
- Design Tiny URL
Part 1: 前言: 最近看了一些关于短址(short URL)方面的一些博客,有些博客说到一些好的东西,但是,也不是很全,所以,这篇博客算是对其它博客的一个总结吧. 介绍: 短址,顾名思义,就是把 ...
- python ide ---wing 注册机
注册机脚本代码如下: import sha import string BASE2 = '01' BASE10 = '0123456789' BASE16 = '0123456789ABCDEF' B ...
- iOS.ReactNative-5-make-react-native-to-support-dynamically-update
基于React Native来实现App的热更新 热更新: 类似Hot-Patching,在程序不发布版本的前提下,对部分功能或者全部功能进行修改或者升级. JSX 1. JSX简介 1.1 http ...
随机推荐
- SpringBoot - 搭建静态资源存储服务器
目录 前言 环境 实现效果 具体实现 文件上传 配置类 上传接口 上传实现 辅助类 实体 上传测试 文件访问 配置类 项目源码 前言 记录下SpringBoot下静态资源存储服务器的搭建. 环境 wi ...
- 动环监控系统中B接口的实现
动环监控系统简述 1.术语介绍 1.1 省集中监控中心-Province Supervision Center(PSC) 面向多FSU管理的高级监控层次,即省集中监控中心,通过开放的数据协议,连接监控 ...
- Identity角色管理二(显示角色)
需要将目前所有角色名显示出来,方法同用户管理 一.创建Index acction public async Task<ActionResult> Index() { var roles = ...
- 昭山欢node资料学习笔记
以前学过一片node工作没有用,忘了,趁这个春节在整理一片 第一章 快速塔建一个局哉网服务器 const http = require("http");var server = h ...
- 关于vue-cli的安装
(一):*安装 vue-cli 参考: https://cn.vuejs.org/v2/guide/installation.html https://github.com/vuejs/vue-cli ...
- PHP中的那些魔术常量
之前我们已经了解了一些常用的魔术方法,除了魔术方法外,PHP还提供一些魔术常量,相信大家在日常的工作中也都使用过,这里给大家做一个总结. 其实PHP还提供了很多常量但都依赖于各类扩展库,而有几个常量是 ...
- Git 访问慢 解决办法
1. 查询Git最快的IP 通过 https://www.ipaddress.com/ 这个网站来获取当前github最新的ip分别获取以下两个域名的IP地址: 可以在访问git网站使用F12查询哪个 ...
- Centos8.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台
前言 本篇文章引用了小菠萝测试笔记,大部分内容非原创,基于自身实操过程中,完善了部分. 本篇随笔是在Linux上搭建的,后面会补充在docker以及k8s上如何部署安装 工具介绍 工具 介绍 Jmet ...
- sonar-scanner命令参数分析
C:\Users\huang>sonar-scanner -h INFO: INFO: usage: sonar-scanner [options] INFO: INFO: Options: I ...
- chrome 的 options 参数
在使用selenium浏览器渲染技术,爬取网站信息时,默认情况下就是一个普通的纯净的chrome浏览器,而我们平时在使用浏览器时,经常就添加一些插件,扩展,代理之类的应用.相对应的,当我们用chrom ...