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