首页 > 其他分享 >CF803C Maximal GCD 题解

CF803C Maximal GCD 题解

时间:2023-08-17 19:34:51浏览次数:42  
标签:Maximal std right GCD 题解 result dfrac 序列 left

题意

构造一个长度为 \(k\),和为 \(n\) 的严格单调递增序列,并最大化其最大公约数。

(\(1 \le n,k \le 10^{10}\))

题解

首先可以发现一个事实,这个序列的最大公约数一定为 \(n\) 的因子。所以我们可以考虑枚举 \(n\) 的所有因子并判断其能否成为整个序列的最大公约数。假设我们现在枚举到的因子为 \(x\),那么满足要求的序列各个元素一定为 \(x\) 的倍数,考虑最终序列 \(a_i\) 除 \(x\) 后的值 \(b_i\),显然 \(b\) 同 \(a\) 一样单调递增。

考虑一个引理,长度为 \(k\) 的严格单调递增序列的和最小为 \(\dfrac{k \left(k + 1\right)}{2}\),并且一定存在和大于 \(\dfrac{k \left(k + 1\right)}{2}\) 的长度为 \(k\) 的严格单调递增序列。证明考虑从和最小的序列情况下改变序列的几个值,使得和增加 \(\Delta sum - \dfrac{k \left(k + 1\right)}{2}\),显然直接将最后一位的值增加该差值即可满足要求,即 \(b_k \leftarrow b_k + \Delta\)。

所以我们以 \(\mathcal{O}(\sqrt{n})\) 的复杂度枚举 \(n\) 的各个因子 \(d\),并找到最大的满足 \(n / d \ge \dfrac{k \left(k + 1\right)}{2}\) 的因子 \(D\),设 \(\Delta = n - d \times \dfrac{k \left(k + 1\right)}{2}\),那么最终序列的前 \(k - 1\) 项依次为 \(1 \cdot D, 2 \cdot D, \cdots, \left(k - 1\right) \cdot D\),第 \(k\) 项为 \(k \cdot D + \Delta\)。可以证明这样的序列一定合法且序列的最终长度不会超过 \(\max(k, \dfrac{n}{\dfrac{k \left(k + 1\right)}{2}})\)。

Code

//Codeforces - CF803C
#include <bits/stdc++.h>

typedef long long valueType;

int main() {
    valueType N, K;

    std::cin >> N >> K;

    if (N / K < (K - 10) / 2) {
        std::cout << -1 << std::endl;

        return 0;
    }

    if (N < K * (K + 1) / 2) {
        std::cout << -1 << std::endl;

        return 0;
    }

    valueType const min = K * (K + 1) / 2;
    valueType const start = std::ceil(std::sqrt((long double) N) + 10);

    valueType result = 1;

    for(valueType i = start; i >= 1; --i) {
        if (N % i == 0) {
            if (N / i >= min)
                result = std::max(result, i);

            if (i >= min)
                result = std::max(result, N / i);
        }
    }

    valueType const remain = N / result - min;

    for(valueType i = 1; i < K; ++i)
        std::cout << i * result << ' ';

    std::cout << result * (K + remain) << std::endl;

    return 0;
}

标签:Maximal,std,right,GCD,题解,result,dfrac,序列,left
From: https://www.cnblogs.com/User-Unauthorized/p/solution-CF803C.html

相关文章

  • 【题解】#373. 「USACO1.1」Friday the Thirteenth 题解(2023-07-19更新)
    #373.「USACO1.1」FridaytheThirteenth题解本文章的访问次数为次。Part1提示题目传送门欢迎大家指出错误并私信这个蒟蒻欢迎大家在下方评论区写出自己的疑问(记得@这个蒟蒻)Part2背景这个蒟蒻又一次写了一篇大水题的题解(话说为什么是又),当然也是为了纪念他的\(......
  • 【题解】#68. 「NOIP2004」津津的储蓄计划 题解(2023-07-19更新)
    #68.「NOIP2004」津津的储蓄计划题解本文章的访问次数为次。Part1提示题目传送门欢迎大家指出错误并私信这个蒟蒻欢迎大家在下方评论区写出自己的疑问(记得@这个蒟蒻)Part2背景这是这个蒟蒻的第一篇题解,也是这个蒟蒻对自己的\(50\)AC的纪念。Part3更新日志......
  • 算法题解之罗马数字智力游戏
    题目描述牛牛和朋友在玩耍时发现了一款关于罗马数字的智力游戏。在这个游戏中,他们首先需要将一个给定的整数num转换为对应的罗马数字。但是,他们发现,当他们每次转换后的结果字符串长度达到了一个阈值limit时,他们需要将字符串反转。请编写一个函数,将给定的整数num转换为对应的......
  • [JOISC 2014 Day3] 电压 题解
    题面给定\(n\)个点\(m\)条边的无向图。现在要对每个点黑白染色。若能够使一条边连接的两点颜色相同,其他边连接的两点颜色不同,则这条边合法。求合法的边数。$2\leqn\leq10^5,1\leqm\leq2\times10^5$。图可能不连通,不保证没有重边。题解首先考虑转化一下题目......
  • P3780 [SDOI2017] 苹果树 题解
    DescriptionP3780[SDOI2017]苹果树给定一棵\(n\)个点的树,每个点有若干个价值相同的苹果,儿子能摘至少一个仅当父亲被摘至少一个。给定\(k\),设\(h\)为你摘的苹果的最大深度,你做多能摘\(k+h\)个,求最大价值。对于所有数据,\(1\len\le5\times10^4\),\(1\lek\le5\time......
  • P4183 [USACO18JAN] Cow at Large P 题解
    题意分析我们首先想到,枚举贝茜在\(x\)点,枚举度数大于\(2\)的点为\(y\)。设\(x\)的度数为\(a\),\(y\)的度数为\(b\)。我们首先发现每个\(x\)点都有一个初始的贡献为\(a\)条通往叶子的路径。如果点\(y\)到最近的叶子节点的距离大于到\(x\)的点的距离(农夫不能在......
  • 安防监控视频汇聚平台EasyCVR视频平台调用iframe地址无法播放的问题解决方案
    安防监控视频汇聚平台EasyCVR基于云边端一体化架构,具有强大的数据接入、处理及分发能力,可提供视频监控直播、云端录像、视频云存储、视频集中存储、视频存储磁盘阵列、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、AI算法中台智能分析无缝对接等功能。为了便于用户......
  • 安防监控视频汇聚平台EasyCVR视频平台调用iframe地址无法播放的问题解决方案
    安防监控视频汇聚平台EasyCVR基于云边端一体化架构,具有强大的数据接入、处理及分发能力,可提供视频监控直播、云端录像、视频云存储、视频集中存储、视频存储磁盘阵列、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、AI算法中台智能分析无缝对接等功能。为了便于用户二......
  • vue项目在360浏览器兼容模式下SCRIPT1002: 语法错误以及“fetch”未定义问题解决
    使用360浏览器的兼容模式,vue项目页面空白,打开控制台,发现如下报错:SCRIPT1002:语法错误 解决方法如下:1、安装依赖npminstall--savecore-jsregenerator-runtime2、在main.js引入import'core-js/stable';import'regenerator-runtime/runtime';3、在babel.confi......
  • CF1545B题解
    CF1545B题解题目描述你有一个长为\(n\)的棋盘,这个棋盘上有一些棋子,你可以进行如下操作:如果第\(i+2\)个位置是空的,且第\(i+1\)个位置非空,则可以将第\(i\)个位置的棋子挪到第\(i+2\)个位置(\(i+2\leqn\)).如果第\(i-2\)个位置是空的,且第\(i-1......