AtCoder Beginner Contest 220 B - Base K
問題の要約
整数A,BがK進法表記で与えられる。
A*Bを10進法表記で出力しろ。
制約
1<=K<=10
1<=A,B<=10^5
入力
K
A B
考え方
1,A,Bを10進法に直してからA*Bを出力すればよい。
2,K進法のXを10進法に直す方法。
K進法の第一位をX1として10進法に直すとX1*(K^0)となる。
K進法の第i位をXiとして10進法に直すとXi*(K^(i-1))となる。
これをすべて足すと10進法のXになる。
実際のプログラム
#include<iostream>
#include<cmath>
using namespace std;
long long baseKto10(long long K, long long X){
long long base10_X = 0;
long long i = 0;
while(X != 0){
long long Xi = X % 10;
base10_X += Xi*pow(K,i);
X /= 10;
i++;
}
return base10_X;
}
int main(){
long long K;
cin >> K;
long long A,B;
cin >> A >> B;
A = baseKto10(K,A);
B = baseKto10(K,B);
cout << A * B << endl;
return 0;
}