题解 AT_abc220_b [ABC220B] Base K
题目传送门:
基本思路
给出两个 \(K\) 进制数 \(A,B\),要求 \(A \times B\) 在十进制下的值。
我们很容易想到把 \(A\) 和 \(B\) 都转化为十进制数,再相乘。
\(\text{注意!}\)
\(A,B\) 都是 \(K\) 进制数,不是 \(10\) 进制整数,不能用 int 输入,要用 string。
AC代码:
#include<bits/stdc++.h>
using namespace std;
long long s(string x,int k)
{
long long res=1,ans=0,si=x.size();
for(int i=si-1;i>=0;i--)
{
ans+=(x[i]-'0')*res;
res*=k;
}
return ans;
}
long long k,ans;
int main()
{
string a,b;
cin>>k>>a>>b;
ans=s(a,k)*s(b,k);
cout<<ans<<'\n';
return 0;
}
代码已AC,可放心食用。

题解 AT_abc220_b [ABC220B] Base K
浙公网安备 33010602011771号