洛谷 AT4810 题解

思路

直接暴力枚举。

有两点要注意:

  1. 如果当前求得的最小值为0,直接输出并退出程序;我第一遍就是这么TLE的。

  2. 数据范围是 2×1092 \times {10^9},再一乘必然会爆 int\texttt{int},所以要开 long long\texttt{long long}

上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<cstdio>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
ll l,r;
ll ans=2020;//ans的初始值只要小于 mod2019 也就是2018 就可以
int main()
{
scanf("%lld%lld",&l,&r);
for(ll i=l;i<=r;i++)
{
for(ll j=i+1;j<=r;j++)
{
ans=min(ans,(i*j)%2019);
if(ans==0)//如果为0直接输出并退出程序,否则会超时
{
printf("0\n");
return 0;
}
}
}
printf("%lld\n",ans);
return 0;
}

岛国的题一定要行末换行


洛谷 AT4810 题解
https://blog.makerlife.top/post/solution-AT4810/
作者
Makerlife
发布于
2022年1月26日
许可协议