poj-1220
来源:互联网 发布:用excel数据分析方法 编辑:程序博客网 时间:2024/05/21 10:06
无节操,贴代码
#include<stdio.h>#include<string.h>char str[1000];int start[1000],ans[1000],res[10000];//被除数 商 余数int base1,base2;void change(){ int i,len=strlen(str); start[0]=len; for(i=1;i<=len;i++) { if(str[i-1]>='0'&&str[i-1]<='9') start[i]=str[i-1]-'0'; else if(str[i-1]>='a'&&str[i-1]<='z') start[i]=str[i-1]-'a'+36; else start[i]=str[i-1]-'A'+10; }}void solve(){ memset(res,0,sizeof(res)); int y,i,j; //先余低位,后余高位 while(start[0]>=1)//知道被除数等于0 { y=0;i=1; ans[0]=start[0]; while(i<=start[0]) { y=y*base1+start[i]; ans[i++]=y/base2; y%=base2; } 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)); }}void output(){ printf("%d %s\n%d ",base1,str,base2); int i; for(i=res[0];i>=1;i--) { if(res[i]>=0&&res[i]<=9) printf("%d",res[i]); else if(res[i]>=10&&res[i]<=35) printf("%c",'A'+res[i]-10); else printf("%c",'a'+res[i]-36); } printf("\n\n");}int main(){ int n; //freopen("a.in","r",stdin); //freopen("out.txt","w",stdout); scanf("%d",&n); while(n--) { scanf("%d%d%s",&base1,&base2,str); change(); solve(); output(); } return 0;}