icpc 银川 I. Base62 任意进制的转换 短除法
Problem Description
As we already know, base64 is a common binary-to-text encoding scheme. Here we define a special series of positional systems that represent numbers using a base (a.k.a. radix) of 2 to 62. The symbols ‘0’ – ‘9’ represent zero to nine, and ‘A’ – ‘Z’ represent ten to thirty-five,and ‘a’ – ‘z’ represent thirty-six to sixty-one. Now you need to convert some integer z in base x into base y.
Input
The input contains three integers x; y (2 ≤ x; y ≤ 62) and z (0 ≤ z < x^120), where the integer z is given in base x.
Output
Output the integer z in base x.
Sample Input
16 2 FB
Sample Output
11111011
Analysis of ideas
利用短除法 poj1220原题
Accepted code
#include <iostream>
#include <cstdio>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
#define cin(a) scanf("%d",&a)
#define ll long long
#define gcd __gcd
const int inf = 0x3f3f3f3f;
const int maxn = 1100;
int getnum(char ch) //字符转数字
{
if(ch <= '9') return ch-'0';
else if(ch <= 'Z') return 10+ch-'A';
else return 36+ch-'a';
}
char getch(int num) //数字转字符
{
if(num <= 9) return num+'0';
else if(num <= 35) return num-10+'A';
else return num-36+'a';
}
int n,m;
char str1[maxn],str2[maxn];
int t[maxn],ans[maxn];
void solve()
{
int len = strlen(str1);
for(int i = 0; i < len; i++) //先把字符串变成数组,高位->低位
t[i] = getnum(str1[i]);
int j = 0,k = 0;
while(j < len)
{
for(int i = j; i < len-1; i++) //除以m,把余数加到下一位
{
t[i+1] += t[i] % m * n;
t[i] /= m;
}
ans[k++] = t[len-1]%m; //个位数余m
t[len-1] /= m;
while(j < len && !t[j]) j++; //最高位是0,j++
}
for(int i = 0; i < k; i++) //逆序变成字符串
{
str2[i] = getch(ans[k-i-1]);
}
}
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif
int t;
cin(t);
while(t--)
{
mem(ans,0),mem(str2,0); //wa
cin>>n>>m;
cin>>str1;
solve();
cout<<n<<' '<<str1<<endl;
cout<<m<<' '<<str2<<endl<<endl;
}
}
icpc 银川 I. Base62 任意进制的转换 短除法的更多相关文章
- C#十进制与任意进制的转换
/// <summary> /// 将十进制转换为指定的进制 /// </summary> /// <param name="Val">十进制值 ...
- python的十进制与任意进制的转换
将任意进制转换成十进制 ", 8)) # 表示把8进制的54转换成十进制数并输出结果. # 8可以是2.8,10,16等进制数 将十进制转换成任意进制 def f(n,x): #n为待转换的 ...
- java 的任意进制间转换(很方便)
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = n ...
- java 的任意进制间转换
直接上代码: public class Main { public static void main(String[] args) { // TODO Auto-generated method st ...
- (高精度运算4.7.26)POJ 1220 NUMBER BASE CONVERSION(高精度数的任意进制的转换——方法:ba1----->10进制----->ba2)
package com.njupt.acm; import java.math.BigInteger; import java.util.Scanner; public class POJ_1220_ ...
- C语言之任意进制的转换
我们都知道转换进制是一个让人比较头疼的事情,下面我的代码不是最好的,也就仅仅是一个思路而已,至少我认为使用栈来进行进制转换是比较合适的一种方法,好了,不多叙述了. #include<stdio. ...
- C#实现整型数据字任意编码任意进制的转换和逆转换
实现如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespa ...
- Python版任意进制转换
def decimalToAny(num,n): baseStr = {10:"a",11:"b",12:"c",13:"d&qu ...
- itoa()、atoi()、任意进制转换
头文件:<stdlib.h> itoa --功能:将任意类型的数字转换为字符串.在<stdlib.h>中与之有相反功能的函数是atoi. atoi----功 能: 将字符串转换 ...
随机推荐
- 开始使用 Manjaro(添加源+字体渲染去模糊+软件安装+优化配置+常见错误)(30)
1. 添加 archlinux 镜像源 1. 步骤一 向 /etc/pacman.d/mirrorlist 中添加国内镜像地址 1.1 方法1:自动添加 1. 输入如下命令查看国内镜像源,并按质量排序 ...
- k8s开发实践
代码自动生成:https://blog.openshift.com/kubernetes-deep-dive-code-generation-customresources/ 自定义controlle ...
- PB之常用函数
原文网址:https://www.cnblogs.com/zhaoxiong/p/8082523.html PB之常用函数 弹出窗口:messagebox() 基本写法:Messagebox('标题' ...
- spring整合MQ
---恢复内容开始--- 一. 导入依赖 <dependencies> <!-- ActiveMQ客户端完整jar包依赖 --> <dependency> < ...
- git 修改注释
原文:https://www.jianshu.com/p/098d85a58bf1 修改最后一条注释: git commit --amend 如果已经推送到远程,强制push到远程仓库: git pu ...
- SQL Server元数据查询
原文:SQL Server元数据查询 1.查询触发器的信息 --查询触发器的信息 select name, --触发器名称 (select name from sys.objects where ob ...
- Go 操作 Mysql(三)
什么是事务? 事务是数据库非常重要的部分,它具有四大特性(原子性.一致性.隔离性.持久性) 以下内容出自<高性能MySQL>第三版,了解事务的ACID及四种隔离级有助于我们更好的理解事务运 ...
- HTTP协议超级详解
HTTP协议简介 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式.协作式和超媒体信息系统的应用层协议.HTTP是万维网的数据通信的基础. ...
- Java 之 字符缓冲流
一.字符缓冲输出流 java.io.BufferedWriter extends Writer BufferedWriter:字符缓冲输出流. 继承自父类的共性成员方法: void write(int ...
- Python基础Day8
一.内容回顾 列表的存储:列表里的元素存储的是值的内存地址,就算通过copy,复制后容器里的值也是指向同一个内存地址(跟驻留机制有关) l1 = [1,2,3, l2 = l1.copy() 浅cop ...