大数进制转换 poj1220
普通的做法,大数除小数。
复杂度o( log(n)*log(n) ),其实就是位数的平方。
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 4913 | Accepted: 2246 |
Description
{ 0-9,A-Z,a-z }
HINT: If you make a sequence of base conversions using the output of
one conversion as the input to the next, when you get back to the
original base, you should get the original number.
Input
first line of input contains a single positive integer. This is the
number of lines that follow. Each of the following lines will have a
(decimal) input base followed by a (decimal) output base followed by a
number expressed in the input base. Both the input base and the output
base will be in the range from 2 to 62. That is (in decimal) A = 10, B =
11, ..., Z = 35, a = 36, b = 37, ..., z = 61 (0-9 have their usual
meanings).
Output
output of the program should consist of three lines of output for each
base conversion performed. The first line should be the input base in
decimal followed by a space then the input number (as given expressed in
the input base). The second output line should be the output base
followed by a space then the input number (as expressed in the output
base). The third output line is blank.
Sample Input
- 8
- 62 2 abcdefghiz
- 10 16 1234567890123456789012345678901234567890
- 16 35 3A0C92075C0DBF3B8ACBC5F96CE3F0AD2
- 35 23 333YMHOUE8JPLT7OX6K9FYCQ8A
- 23 49 946B9AA02MI37E3D3MMJ4G7BL2F05
- 49 61 1VbDkSIMJL3JjRgAdlUfcaWj
- 61 5 dl9MDSWqwHjDnToKcsWE1S
- 5 10 42104444441001414401221302402201233340311104212022133030
Sample Output
- 62 abcdefghiz
- 2 11011100000100010111110010010110011111001001100011010010001
- 10 1234567890123456789012345678901234567890
- 16 3A0C92075C0DBF3B8ACBC5F96CE3F0AD2
- 16 3A0C92075C0DBF3B8ACBC5F96CE3F0AD2
- 35 333YMHOUE8JPLT7OX6K9FYCQ8A
- #include <iostream>
- #include <stdio.h>
- #include <string.h>
- #include <algorithm>
- #include <stdlib.h>
- #include <math.h>
- using namespace std;
- char str[];
- int num[];
- int ans[];
- int chg(char c)
- {
- if( c>=''&&c<='' ) return c-'';
- if( c>='A'&&c<='Z' ) return c-'A'+;
- if( c>='a'&&c<='z' ) return c-'a'+;
- return -;
- }
- char unchg(int x)
- {
- if(x>=&&x<=) return x+'';
- if(x>=&&x<=) return 'A'+x-;
- else return 'a'+x-;
- }
- int main()
- {
- int T;
- cin>>T;
- while(T--)
- {
- int from,to;
- scanf("%d%d",&from,&to);
- scanf("%s",str);
- int len=strlen(str);
- for(int i=;i<len;i++)
- {
- num[i] = chg(str[i]);
- }
- int cnt=;
- int wei=;
- while( cnt < len )
- {
- //然后做一次除法
- for(int i=cnt;i<len;i++)
- {
- num[ i+ ] += (num[i]%to)*from;
- num[ i ] /= to;
- }
- ans[ wei++ ] = num[len]/from;
- num[len]=;
- for(int i=cnt;i<len;i++)
- {
- if(num[i]==) cnt++;
- else break;
- }
- }
- printf("%d %s\n",from,str);
- printf("%d ",to);
- for(int i=wei-;i>=;i--)
- {
- printf("%c",unchg(ans[i]));
- }
- printf("\n\n");
- }
- return ;
- }
大数进制转换 poj1220的更多相关文章
- POJ1220(大数进制转换)
NUMBER BASE CONVERSION Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4652 Accepted: ...
- hdu-1877(大数+进制转换)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1877 思路:注意考虑0,0的情况. #include<iostream> #include ...
- 1030 大数进制转换(51Nod + JAVA)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1030 题目: 代码实现如下: import java.mat ...
- poj1220(短除法实现任意进制转换)
题目链接:https://vjudge.net/problem/POJ-1220 题意:给定a进制的大数s,将其转换为b进制.其中2<=a,b<=62. 题意:一般进制转换是以10进制为中 ...
- poj1220:高精度进制转换模板题
今天撸3708 一直奇怪的re 就先放下了,写这个题的过程中学习了一个高精度进制转换,用这个模板写了1220 记录一下: #include <iostream> #include < ...
- poj1220 (高精度任意进制转换)
http://poj.org/problem?id=1220 高精度任意进制转换 代码是从discuss里找到的,据说是maigo神牛写的. 超精简!! 我自己第一写的时候,还把n进制先转成10进制, ...
- 高精度进制转换(poj1220)
常规短除法原理 高精度进制转换是对于特别大的数字来说的,当数字特别大时,难以进行除法和取余的操作,此时通过字符串模拟的办法可以解决. #include <iostream> #includ ...
- poj2305-Basic remains(进制转换 + 大整数取模)
进制转换 + 大整数取模一,题意: 在b进制下,求p%m,再装换成b进制输出. 其中p为b进制大数1000位以内,m为b进制数9位以内二,思路: 1,以字符串的形式输入p,m; 2,转换:字符串-&g ...
- java se系列(二) 关键字、注释、常量、进制转换、变量、数据类型转换、运算符
1 关键字 1.1 关键字的概述 Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名.方法名.类名.包名. 1.2 常见的关键字 备注 ...
随机推荐
- 3、列表 list
列表 >>> list=['aaa','bbb','ccc'] >>> print list ['aaa', 'bbb', 'ccc'] >>> ...
- IntelliJ全家桶修改terminal字体的方法
IntelliJ IDEA 设置Terminal 窗口字体大小 我在Setting中查看了所有和Terminal字样有关的设置,都没有找到设置字体大小的方法,原来Terminal也只需要设置Conso ...
- Xamarin.Forms 调用腾讯地图
用Xamarin.Forms 也有一段时间了,跨平台,生成native代码的噱头 天花乱坠的, 其中的坑,只有用过的人才懂... 就拿地图来说...总不能用google地图吧 于是只能自己想办法了. ...
- [Algorithms] Using Dynamic Programming to Solve longest common subsequence problem
Let's say we have two strings: str1 = 'ACDEB' str2 = 'AEBC' We need to find the longest common subse ...
- 使用uncompyle2直接反编译python字节码文件pyo/pyc
update:在Mac OS X版的September 10, 2014版(5.0.9-1)中发现安装目录中的src.zip已更换位置至WingIDE.app/Contents/Resources/b ...
- Solidworks如何在自定义的基准面上创建3D草图
1 选择某个基准面 右击"基准面上的3D草图" 2 当基准面出现黄色框即为正确.
- 【MVC5】使用Autofac实现依赖注入
1.安装Autofac 在Package Manager Console执行如下命令: Install-Package AutofacInstall-Package Autofac.Mvc5 2.追加 ...
- Android学习(十四) Service组件
一.定义 运行在后台,没有页面,不可见.优先级高于Activity,当系统内存不足时,会先释放一些Activity.注意,Service同样是运行在主线程中,不能做一些耗时操作.如果一定要做一些耗时的 ...
- Lambda Expression in C#
1.Expression Expression<Func<double, double>> exp = a => Math.Sin(a); 委托类型Func<dou ...
- 【Hadoop基础教程】3、Hadoop之伪分布式环境搭建(转)
伪分布式模式即单节点集群模式,所有的守护进程都运行在同一台机器上.这种模式下增加了代码调试功能,可以查看内存.HDFS文件系统的输入/输出,以及与其他守护进程交互.以hadoop用户远程登录K-Mas ...