当前位置: 代码迷 >> 综合 >> poj 1220 NUMBER BASE CONVERSION 高精度进制转换
  详细解决方案

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

热度:99   发布时间:2024-01-19 05:57:27.0

题意:

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

分析:

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;	
} 


  相关解决方案