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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值