模拟赛 170118.T1

货物互通

总时间限制: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

你可能感兴趣的:(模拟赛 170118.T1)