首页 > 代码库 > poj1220:高精度进制转换模板题
poj1220:高精度进制转换模板题
今天撸3708 一直奇怪的re 就先放下了,写这个题的过程中学习了一个高精度进制转换,用这个模板写了1220
记录一下:
#include <iostream>#include <stdio.h>#include<string.h>#include<algorithm>#include<string>#include<ctype.h>using namespace std;#define MAXN 10000char s[10000];int start[10000];int res[10000];int ans[10000];int getnum(char c){ if(c>=‘a‘) return c-‘a‘+36; if(c>=‘A‘) return c-‘A‘+10; return c-‘0‘;}char getchar(int n){ if(n>=36) return ‘a‘+n-36; if(n>=10) return ‘A‘+n-10; return ‘0‘+n;}void trans(char* str,int base0,int base1){ memset(res,0,sizeof(res)); int y,i,j; start[0]=strlen(str); for(i=1;i<=start[0];i++) { start[i]=getnum(str[i-1]); } while(start[0]>=1) { y=0; //余数 ans[0]=start[0]; for(i=1;i<=start[0];i++) { y=y*base0+start[i]; ans[i]=y/base1; y%=base1; } res[++res[0]]=y; //这一轮的余数 i=1; while(i<=ans[0]&&ans[i]==0) i++; memset(start,0,sizeof(start)); for(j=i;j<=ans[0];j++) start[++start[0]]=ans[j]; memset(ans,0,sizeof(ans)); } return;}void output(){ for(int i=res[0];i;i--) printf("%c",getchar(res[i])); printf("\n");}int main(){ #ifndef ONLINE_JUDGE freopen("shu.txt","r",stdin); #endif int t; scanf("%d",&t); while(t--) { int x,y; scanf("%d%d%s",&x,&y,s); trans(s,x,y); printf("%d %s\n",x,s); printf("%d ",y); output(); printf("\n"); } return 0;}
poj1220:高精度进制转换模板题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。