【九度】题目1080:大数进制转换
来源:互联网 发布:puppy linux xiazai 编辑:程序博客网 时间:2024/06/04 19:31
- 题目描述:
将M进制的数X转换为N进制的数输出。
- 输入:
输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。
- 输出:
输出X的N进制表示的数。
- 样例输入:
16 10F
- 样例输出:
15
- 提示:
输入时字母部分为大写,输出时为小写,并且有大数据。
- 来源:
2008年清华大学计算机研究生机试真题
// 大数二进制转换.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <string.h>#define maxDigits 100struct bigInteger{int digit[maxDigits];int size;void init (){for(int i=0;i<maxDigits;i++) digit[i]=0;size=0;}void set( int x){init();do{ digit[size++]=x%10000; x/=10000;}while (x!=0);}void output(){for (int i = size-1; i >=0 ; i--){if(i!=size-1) printf("%04d",digit[i]);elseprintf("%d",digit[i]);}printf("\n");}bigInteger operator *(int x) const{ //高精度整数与普通整数相加bigInteger ret;ret.init();int carry =0;for(int i=0;i<size;i++){int tmp=x*digit[i]+carry;carry=tmp/10000;tmp%=10000;ret.digit[ret.size++]=tmp;}if(carry)ret.digit[ret.size++]=carry;return ret;}bigInteger operator+( const bigInteger &A) const{//两高精度整数相加bigInteger ret;ret.init();int carry=0;for(int i=0;i<A.size||i<size;i++){int tmp=A.digit[i]+digit[i]+carry;carry=tmp/10000;tmp%=10000;ret.digit[ret.size++]=tmp;}if(carry) ret.digit[ret.size++]=carry;return ret;}bigInteger operator /(int x) const{bigInteger ret;ret.init();int remainder=0;for (int i = size-1; i >=0 ; i--){int t=(remainder*10000+digit[i])/x;int r=(remainder*10000+digit[i])%x;ret.digit[i]=t;remainder=r;} ret.size=0; for(int i=0;i<maxDigits;i++){ if(digit[i]!=0) ret.size=i+1; } return ret;}int operator %(int x) const{int remainder=0;for (int i = size-1; i >=0 ; i--){int t=(remainder*10000+digit[i])/x;int r=(remainder*10000+digit[i])%x;remainder=r;}return remainder;}}a,b,c;char str1[10000],str2[10000];int _tmain(int argc, _TCHAR* argv[]){int n,m;while(scanf("%d%d",&m,&n)){scanf("%s",str1);int L=strlen(str1);a.set(0);b.set(1);for(int i=L-1;i>=0;i--){int t;if(str1[i]>='0'&&str1[i]<='9')t=str1[i]-'0';else t=str1[i]-'A'+10; a=a+b*t;b=b*m;}int size=0;do{int t=a%n;if(t>=10)str2[size++]=t-10+'a';else str2[size++]=t+'0';a=a/n;}while (a.digit[0]!=0||a.size!=1);for (int i = size-1; i >= 0; i--)printf("%c",str2[i]);printf("\n");}return 0;}
0 0
- 【九度】题目1080:大数进制转换
- 大数的任意进制之间的转换(九度OJ题目1080)
- 九度题目1138进制转换
- 九度 题目1138:进制转换
- 九度OJ 题目1080:进制转换
- 九度OJ 题目1080:进制转换
- 九度 oj 题目1080:进制转换
- 【九度OJ】题目1080:进制转换 解题报告
- 九度OJ 题目1080:进制转换
- 九度 1138 - 大数除余 - 进制转换
- 九度1138:进制转换(大数除余)
- 九度oj1080 大数的进制转换
- 九度OJ 1080 进制转换(又是大数计算)
- 九度OnlineJudge题目1138:进制转换
- 九度OJ 题目1138:进制转换
- 【九度OJ】题目1138:进制转换 解题报告
- 九度OJ题目1138:进制转换
- 题目1138:进制转换 九度OJ
- iOS 10 的适配问题
- java中关于“按值传递”的相关问题
- Shader自学笔记 3.3.2 采样遮罩纹理 使高光部分更加柔和
- Atitit opencv 模板匹配
- Atitit 函数调用的原理与本质attilax总结 stdcall cdecl区别
- 【九度】题目1080:大数进制转换
- Storm 流程分析
- Atitti python2.7安装 numpy attilax总结
- 1008. Airline Routes (35)解题报告
- 虚拟化的首选:VMware vSphere
- 元思考
- 内网渗透之Hydra
- 纯C++编写Win32/X64通用Shellcode注入csrss进程
- 优化 Ext4 分区格式化后占用空间(通过降低inode数来节省磁盘空间)