【题解】 AT_abc220_b [ABC220B] Base K

题目传送门:

  1. AtCoder

  2. 洛谷

基本思路

给出两个 $K$ 进制数 $A,B$,要求 $A \times B$ 在十进制下的值。

我们很容易想到把 $A$ 和 $B$ 都转化为十进制数,再相乘。

$\text{注意!}$

$A,B$ 都是 $K$ 进制数,不是 $10$ 进制整数,不能用 int 输入,要用 string

AC代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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
https://binglingqwq.github.io/2023/10/05/题解-AT-abc220-b-ABC220B-Base-K/
作者
BinglingQwQ
发布于
2023年10月5日
许可协议