公式
B - Base K 解説 by sugarrr
\(K\) 進法表記で与えられた \(S\) を、\(10\) 進法表記で表す関数を作ることを目標にします。
これは以下のようなアルゴリズムを実装すれば良いです。
\(ans =0\) とする。
\(S\) の先頭の桁から見ていき、順番に以下の操作を行う。
- \(ans\) を \(K\) 倍する
- \(ans\) に今見ている桁の数字を加える
\(S\) の最後の桁まで見終わったとき、\(ans\) が求めたい値である。
最後に、\(10\) 進法表記に直した \(A,B\) を掛け合わせれば答えになります。
C++ の実装例も示すので参考にしてください。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll f(string s,ll k){ // K 進法表記の S を、10 進法表記で表す関数
ll ans=0;
for(char x:s){
ans *= k;
ans += x - '0';
}
return ans;
}
signed main(){
ll k;
string a,b;
cin>>k>>a>>b;
ll A = f(a,k);
ll B = f(b,k);
cout<< A * B <<endl;
return 0;
}
投稿日時:
最終更新: