题解 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代码:

#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,可放心食用。

posted @ 2023-09-06 11:41  ﹏冰灵゛  阅读(24)  评论(0)    收藏  举报