分析一下题目,我们首先需要预处理,因为我们相乘的两个数差越大越好,但是我们的数据超级大,我们该如何处理呢,一开始我的思路就是只考虑低位的十多位相乘,但是不知道为啥wa了,我只能拆解,每次都取模,这可能是因为我们的模数不是10的次幂的问题
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mo = 998244353;
const int N = (int)4e5+5;
int a[N],b[N];
string s1,s2;
int n;
int ans = 0;
void solve(){
int t = 0;
for(int i=n-1;i>=0;i--){
t = (t*10 + a[i]) % mo;
}
int u = 0;
int num = 1;
for(int i=0;i<=n-1;i++){
ans = (t*b[i]*num+ans)%mo;
num = num*10%mo;
}
}
signed main(){
cin >> n;
cin >> s1 >> s2;
int cnt = 0;
for(int i=n-1;i>=0;i--){
if(s1[i]>s2[i]){
a[cnt] = s1[i]-'0';
b[cnt] = s2[i]-'0';
}else{
a[cnt] = s2[i]-'0';
b[cnt] = s1[i]-'0';
}
cnt++;
}
solve();
cout << ans;
return 0;
}