hdu 1335

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

题意:前面是一个7位a进制数,表示成后面的进制。如果超过7位则输出ERROR。直接模拟。

代码:

# include <stdio.h>


char str[40] ;


int chartonum(char ch)
{
if (ch >= '0' && ch <= '9') return ch-'0' ;
return ch-'A'+10 ;
}


int gao(char str[], int b)
{
int i, rtn = 0 ;
for (i = 0 ; str[i] ; i++)
{
if (chartonum(str[i])>=b) return -1 ;
rtn = rtn*b + chartonum(str[i]) ;
}
return rtn ;
}


void gao2(int num, int b)
{
int i, cnt = 0 ;
char s[40], tab[] = "0123456789ABCDEF" ;
while (num)
{
s[cnt++] = tab[num%b] ;
num /= b ;
}
if (cnt > 7){
printf ("%7s\n", "ERROR") ;
return ;
}
for (i = 0 ; i < cnt ; i++)
str[cnt-i-1] = s[i] ;
str[cnt] = '\0' ;
printf ("%7s\n", str) ;
}


int main ()
{
int num, b1, b2 ;
while (~scanf ("%s %d %d", &str, &b1, &b2))
{
num = gao(str, b1) ;
if (num == -1) printf ("%7s\n", "ERROR") ;
gao2(num, b2) ;
}
return 0 ;
}



转载于:https://www.cnblogs.com/lzsz1212/archive/2012/02/16/2353534.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值