您的位置:首页 > 其它

poj 1220 NUMBER BASE CONVERSION 高精度进制转换

2015-03-06 01:55 344 查看
题意:

实现一个高精度数的进制转换。

分析:

discuss里找到的精妙简洁模板。

代码:

#include <iostream>
using namespace std;
const int maxN=600;

char ori[maxN],ans[maxN];
int t[maxN],A[maxN];

int main()
{
	int cases,a,b;
	scanf("%d",&cases);
	while(cases--){
		scanf("%d%d%s",&a,&b,ori);		
		int k,i,l;
		k=strlen(ori);
		for(i=k-1;i>=0;--i) t[k-1-i]=ori[i]-(ori[i]<58?48:ori[i]<97?55:61);  
	
		for(l=0;k;){
			for(i=k-1;i>0;--i){
				t[i-1]+=t[i]%b*a;
				t[i]/=b;
			}				
			A[l++]=t[0]%b;
			t[0]/=b;
			for(;k>0&&!t[k-1];--k);
		}
		
		for(ans[l]=i=0;i<l;++i) ans[l-1-i]=A[i]+(A[i]<10?48:A[i]<36?55:61);
	
		printf("%d %s\n%d %s\n\n",a,ori,b,ans);
	}
	return 0;	
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: