我发现了两种从任何基数转换为基数 10 的方法。第一个是我们在大学里做的正常的,比如 521(base-15) ---> (5*15^2)+(2*15^1)+(1*15^0)=1125+30+ 1 = 1156 (base-10) 。我的问题是我将这两种方法都应用于一个数字 (1023456789ABCDE(Base-15)) 但我得到了不同的结果。google code jam 仅接受从第二种方法生成的值,仅针对此特定数字(即 1023456789ABCDE(Base-15))。对于所有其他情况,两者都会产生相同的结果。这个特殊号码有什么大不了的??任何人都可以建议...
#include <iostream>
#include <math.h>
using namespace std;
int main()
{ //number in base 15 is 1023456789ABCDE
int value[15]={1,0,2,3,4,5,6,7,8,9,10,11,12,13,14};
int base =15;
unsigned long long sum=0;
for (int i=0;i<15;i++)
{
sum+=(pow(base,i)*value[14-i]);
}
cout << sum << endl;
//this prints 29480883458974408
sum=0;
for (int i=0;i<15;i++)
{
sum=(sum*base)+value[i];
}
cout << sum << endl;
//this prints 29480883458974409
return 0;
}