Codeforces - 1101A. Minimum Integer 数学推理

发布于 2024-07-14 15:08:01 字数 1982 浏览 11 评论 0

题目

给你 q 代表 q 个查询,每个查询给你 l, r, d ,要你找到最小的不在 [l, r] 之间的能整除 d 的数。

解析

一开始傻逼的去枚举,果断超时:

  • 如果 d < l || d > r ,直接输出 d 即可;
  • 否则就是 l <= d <= r ,这种情况,就要找到第一个 >r%d == 0 的数,这个数自己利用 d 和 r 就能推出来是 r + d - r % d

超时代码:

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(new BufferedInputStream(System.in));
        PrintStream out = System.out;
        int Q = in.nextInt();
        for(int q = 0; q < Q; q++){ 
            int l = in.nextInt(), r = in.nextInt(), d = in.nextInt();
            if(d < l || d > r){ 
                out.println(d);
                continue;
            }
            int mul = d;
            for(; mul <= r; mul += d);
            out.println(mul);
        }
    }
}

推出来的公式:

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(new BufferedInputStream(System.in));
        PrintStream out = System.out;
        int Q = in.nextInt();
        for(int q = 0; q < Q; q++){ 
            int l = in.nextInt(), r = in.nextInt(), d = in.nextInt();
            if(d < l || d > r){ 
                out.println(d);
                continue;
            }
            out.println(r + d - r%d);
        }
    }
}

题目链接

https://codeforces.com/problemset/problem/1101/A

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

玩套路吗

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

我们的影子

文章 0 评论 0

素年丶

文章 0 评论 0

南笙

文章 0 评论 0

18215568913

文章 0 评论 0

qq_xk7Ean

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文