复习一下快忘记了的进制转换

来源:互联网 发布:最新金融网络投资 编辑:程序博客网 时间:2024/05/21 17:51

hdu1335

http://acm.hdu.edu.cn/showproblem.php?pid=1335


AC代码:

#include"cstdio"#include"cstring"#include"iostream"#include"algorithm"using namespace std;int f[1008],j=0;int T(char c[],int n){        int s=0;        for(int i=0; c[i]; i++)        {                if(c[i]=='A'||c[i]=='B'||c[i]=='C'||c[i]=='D'||c[i]=='E'||c[i]=='F')                        s=s*n+c[i]-'A'+10;                else                        s=s*n+c[i]-'0';        }        return s;}int G(int s,int n){        int flag=0;        j=0;        memset(f,0,sizeof(f));        while(s)        {                f[j++]=s%n;                s/=n;                if(j>7)                {                        flag=1;                        break;                }        }        return flag;}int main(){        char c[100];        int n1,n2;        while(cin>>c>>n1>>n2)        {                int s=T(c,n1);                int flag=G(s,n2);                if(flag)                {                        printf("  ");                        printf("ERROR\n");                }                else                {                        for(int i=0; i<7-j; i++)                                printf(" ");                        for(int i=j-1; i>=0; i--)                        {                                if(f[i]>=10)                                        printf("%c",f[i]-10+'A');                                else                                        printf("%d",f[i]);                        }                        printf("\n");                }                memset(c,0,sizeof(c));        }        return 0;}

0 0
原创粉丝点击