交换数字
交换数字
https://ac.nowcoder.com/acm/contest/82401/B
交换数字
标签: 数学 结论
难度: 适中
思路:
结论题,当a+b
为定值时,a
和b
越接近,即|a-b
越小,a*b
越大,这题就反其道而行之,使|a-b|
最大,两个数乘积就越小。
技巧:
当一个数很大时,用字符串存储转为整型时,可以边乘10,边模。
示例:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define MOD 998244353
const int N=200010;
int n;
char a[N],b[N];
int main()
{
cin>>n>>&a[1]>>&b[1];
rep(i,1,n)
{
if(a[i]>b[i])
swap(a[i],b[i]);
}
ll pora=0,porb=0;
//处理大数
rep(i,1,n)
{
pora=(pora*10+(a[i]-'0'))%MOD;
porb=(porb*10+(b[i]-'0'))%MOD;
}
cout<<pora*porb%MOD;
return 0;
}