货物互通
总时间限制:1000ms 内存限制:128 MB
问题描述
在银河系中有好多有着高等生物的类地球星球,
α星球和β星球就是其中的两个,这两个星球每年都会派出大使互通货物,
α大使和β大使会先带着货物都到达位于中间的γ星球交换货物,
如果α大使带的货物更值钱,β大使需要再付相差的β币,
如果β大使带的货物更值钱的话,α大使需要再付相差的α币。
请帮助α大使和β大使计算出,需要付的相差的币值,如果货物等价则输出 0。
输入格式
输入三行,第一行有两个整数:
α星球的货币进制 A 和β星球的货币进制 B(2 <= A,B <= 16)
第二行为α大使所带货物的价值(α进制数)
第三行为β大使所带货物的价值(β进制数)
输出格式
输出为一行,需要付给对方的相差(α或β)币值。
样例输入
16 8
1046A
4435
样例输出
175515
提示
1046A (16) = 66666 (10)
4435 (8) = 2333 (10)
则α大使的货物比β大使的货物贵 64333 (10) ,
64333 (10) = 175515 (8)
那么β大使需要找给α大使 175515 (8) β币。
数据规模与约定:
对于 100%数据,2 <= A,B <= 16,αβ星球的货物价值不超过 10 进制 long long 范围。
实现代码
题解
很明显这是一道进制转换的裸题,
大使的货物转换成十进制比较,
再分别转换成总价值低的星球的进制,相同则为0
读入注意按照字符串%s读入,输出显然也是字符串,
十进制以下只有两个测试点,还有两个测试点是0;
这道题不至于爆零·····吧?
进制转换模板:
void TenConvToOther(int ten, int jz, char s[])
{
int i,j;
char tmp;
i = 0;
while (ten > 0)
{
if (ten % jz <10)
s[i] = '0' + ten % jz;
else
s[i] = 'A' + (ten % jz - 10);
i++;
ten /= jz;
}
s[i] = 0x00;
for (j=0;j<i/2;j++)
{
tmp = s[j];
s[j] = s[i-j-1];
s[i-j-1] = tmp;
}
}