poj1220
来源:互联网 发布:西西影音软件下载 编辑:程序博客网 时间:2024/05/20 14:22
Problem : NUMBER BASE CONVERSION
Description: 用0-9,A-Z,a-z这62个不同的数字和字母来表示不同进制的数,给出一个任意进制(62以内)的数,要求转换为指定进制的数。
Solution:刚开始看到这个我是想先把给出的数化成十进制,然后再由十进制转化为指定的进制,结果发现太麻烦了,我也觉得我实现不了。后来上百度才发现可以用除法解决。在这里为了方便,我举一个比较简单的例子。把十进制的12化成二进制表示,首先用1除以2,得到商是0,余数是1,然后用1乘以10(这里因为是十进制所以乘十)再加上2(12的个位数2),得到商为6,余数为0,这时候的余数存进另一个数组ans,因为这个余数就是我们要转化的二进制需要的那个余数。这时候06就存在了之前的那个存12的数组num里,我在这里有去掉前边多余的零;然后把6再去除以2,得到商为3,余数为0,把此时的余数存进ans数组;这时候num数组里是3,用3除以2,商为1,余数为1(余数1存进ans数组,商1存进num数组);最后用1除以2,商为0,余数为1;这时候num数组只有一个数而且为0,所以不用接着算了。这时候ans数组里为0011,倒序输出就得到了12的二进制了。
Code(C++):
#include <iostream>#include <string>#include <cstring>using namespace std;int num[1000];int ans[1000];int main(){ int N,length,r,t; int m,n,i,j,pos,s; string str; cin>>N; while(N--) { cin>>m>>n>>str; length=str.size(); t=0,s=1; for(i=0; i<length; i++) { if(str.at(i)>='0'&&str.at(i)<='9') num[i]=str.at(i)-'0'; else if(str.at(i)>='A'&&str.at(i)<='Z') num[i]=str.at(i)-'A'+10; else if(str.at(i)>='a'&&str.at(i)<='z') num[i]=str.at(i)-'a'+36; } memset(ans,0,sizeof(ans)); while(!(s==0)) { r=0; pos=0; for(j=0; j<length; j++) { int temp=num[j]; num[pos++]=(r*m+temp)/n; r=(r*m+temp)%n; } ans[t++]=r; for(i=0;i<pos;i++) if(num[i]!=0) break; s=0; for(;i<pos;i++) num[s++]=num[i]; length=s; } cout<<m<<" "<<str<<endl; cout<<n<<" "; for(i=t-1; i>=0; i--) { if(ans[i]>=0&&ans[i]<=9) cout<<char(ans[i]+'0'); else if(ans[i]>=10&&ans[i]<=35) cout<<char(ans[i]+'A'-10); else if(ans[i]>=36&&ans[i]<=61) cout<<char(ans[i]+'a'-36); } cout<<endl; cout<<endl; } return 0;}
0 0
- poj1220
- poj1220
- poj1220 NUMBER BASE CONVERSION
- POJ1220(高精度进制转换)
- 进制转化 poj1220 poj3191
- poj1220 (高精度任意进制转换)
- poj1220(高精度模版,进制转换)
- 进制转换 poj1220-NUMBER BASE CONVERSION
- poj1220-任意进制转换(瞻仰下大牛代码)
- poj1220(多种进制转换) poj3191(负数进制)
- SCAU_专题训练2&3
- 嵌入式开发15天(标准IO,交叉编译,模块化编程)
- 男生和女生的区别
- 第三章+第四章阅读笔记
- 无限轮播
- poj1220
- TCP/IP协议(1)——基本概念
- Linux入门基础(1)
- android开发—如何获取内部储存中的文件路径
- oracle常用计算需注意细节
- PostGIS/PostgreSQL vs. MySql vs. SQL Server
- Android Bluetooth(蓝牙)实例
- Linux驱动笔记
- if - else ; 三目运算符 ; switch 语句的基本用法