注册 登录
编程论坛 C语言论坛

C++小智找余数,求帮助!

Jason_ 发布于 2022-01-16 20:12, 1447 次点击
【问题描述】

小智喜欢研究奇奇怪怪的问题。对于区间 [l,r] ,小智想找出 l≤i<j≤r,且 i,j 为整数使得 (i∗j) mod 2022 的值最小。

【输入格式】

两个整数 l,r ,表示区间的左右端点。

【输出格式】

输出 (i∗j) mod 2022 的最小值。

【输入样例 1】

2023 2040
【输出样例 1】

2
【输入样例 2】

4 5
【输出样例 2】

20
【数据规模与约定】

对于 40% 的数据: 0≤l<r≤1000
对于 100% 的数据: 0≤l<r≤2∗109
2 回复
#2
diycai2022-01-17 11:14
回复 楼主 Jason_
程序代码:
#include <stdio.h>
int main()
{
    int l, r, i, j, tmp, min;
    scanf("%d%d", &l, &r);
    if (l >= r || l < 0)
    {
        printf("error\n");
        return 1;
    }
    if (r - l >= (r % 2022))
    {
        printf("0\n");
        return 0;
    }
    l %= 2022;
    r %= 2022;
    min = 2021;
    for (i=l; i<r; i++)
    {
        for (j=i+1; j<=r; j++)
        {
            tmp = (i*j) % 2022;
            if (tmp < min)
            {
                min = tmp;
            }
        }
    }
    printf("%d\n", min);
    return 0;
}


[此贴子已经被作者于2022-1-17 13:26编辑过]

#3
rjsp2022-01-17 12:55
回复 2楼 diycai
如果输入 2021 2023 的话,应该输出 0 吧

我猜判断条件应该是 if( L%2022==0 || L/2022!=R/2022 )
1