• D. Make It Round(贪心 贡献 数学)[Codeforces Round #834 (Div. 3)]


    题目如下:

    在这里插入图片描述
    在这里插入图片描述

    思路 or 题解:

    我们先考虑如何操作使结尾有最多的 0
    我们不难发现:

    2 * 5 = 10
    10 = 10

    我们是否只需要考虑 2 与 5 的贡献就行了
    答案是肯定的!!!

    约定:
    c n t 5 因 数 5 的 个 数 cnt_5 因数 5 的个数 cnt55
    c n t 2 因 数 2 的 个 数 cnt_2 因数 2 的个数 cnt22

    如果 c n t 5 > c n t 2 cnt_5 > cnt_2 cnt5>cnt2 我们通过 2 去凑更多的 0,也就是 × 2 \times 2 ×2
    如果 c n t 2 > c n t 5 cnt_2 > cnt_5 cnt2>cnt5 我们通过 5 去凑更多的 0,也就是 × 5 \times 5 ×5

    最后 通过 10 去凑更多的 0,也就是 × 10 \times 10 ×10

    我们再考虑如何 构造最大的数并且 后缀 0 的个数最多
    我们通过上面操作 可以使 n × x n \times x n×x 成为后缀 0 个数最多 的一个合法数
    如何才可以取最大呢?
    k × x × n   ( k ≥ 1 ) k \times x \times n\ (k \ge 1) k×x×n (k1) 不会改变 后缀 0 个数
    就是 将 x x x 变大就行, 让 x x x 取得最大值
    x m a x = m / x × x x_{max} = m / x \times x xmax=m/x×x

    所以答案就是:
    n ∗ m / x × x n * m / x \times x nm/x×x

    AC代码:

    #define int long long
    //#define ll long long
    #define PII pair<int, int>
    #define px first
    #define py second
    typedef std::mt19937  Random_mt19937;
    Random_mt19937  rnd(time(0));
    using namespace std;
    const int mod = 1e9 + 7;
    const int N = 100009;
    int n, m;
    void solve()
    {
        cin >> n >> m;
        int cnt2 = 0, cnt5 = 0;
        int tt = n;
        while (tt % 2 == 0)
            cnt2++, tt /= 2;
        tt = n;
        while (tt % 5 == 0)
            cnt5++, tt /= 5;
        int x = 1;
        while (cnt5 > cnt2 && x * 2 <= m)
            cnt5--, x *= 2;
        while (cnt5 < cnt2 && x * 5 <= m)
            cnt2--, x *= 5;
    
        while (x * 10 <= m)
            x *= 10;
        cout << m / x * x * n << '\n';
    }
    signed main()
    {
        buff;
        int _;
        cin >> _;
        while (_--)
            solve();
    }   
    
    • 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
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
  • 相关阅读:
    Mac 下 Go 的安装和卸载
    HTML零基础入门(中)
    Flink CDC 新一代数据集成框架
    计算机毕设(附源码)JAVA-SSM基于的影评系统
    Linux操作系统——校招高频考点汇总
    [开源]企业级在线办公系统,基于实时音视频完成在线视频会议功能
    店匠独立站站外引流之Facebook引流
    this的四个绑定规则
    小程序样式问题
    5招教你提升华为手机的续航能力,只需打开这几个设置即可
  • 原文地址:https://blog.csdn.net/m0_60593173/article/details/127939321