当前位置: 首页 > news >正文

CF803C Maximal GCD做题笔记

题面描述

给你一个\(n\)\(k\),让你构造一个长的为\(k\),且和为\(n\)的严格单调递增的序列,使其的序列gcd(最大的公共因子)最大。

思路解析

因为他的数据极其的大(\(1 \leq n, k \leq 10^{10}\))所以我们只能使用\(O(1)\)或者是\(O(\sqrt{n})\)的(别问我为什么没有\(O(log n)\))但是很明显他是不可能\(O(1)\)写出来的,所以我们只能使用\(O(\sqrt{n})\)了。

既然时间复杂度定的差不多了,那想一想什么要用到\(\sqrt{n}\)呢?对啦,就是枚举\(n\)的因数,为什么是\(n\)呢?因为这个序列的gcd肯定是\(n\)的因数

证明

很简单,设gcd为x,这个数列为b,则有:

\(\sum_{i = 1}^{k} b_i = \sum_{i = 1}^{k} x*\frac{b_i}{x} = x*\sum_{i = 1}^{k} \frac{b_i}{x} = n\)

所以我们可以预处理\(n\)的所有因子,然后进行构造一个严格递增上升序列每个项都乘上这个因子(语文不好,后面有代码)就可以了。

那我们就这剩下一个问题那就是怎么样会无解其实很简单:你的\(n\)要是比1,2,3....,k的和还小,那不就无解了吗,要是不会求$\sum_{i=1}^{k} $那就自己去看高斯求和吧!

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
int n,k,a[N],m;
vector<int> g;
bool cmp(int x,int y){return x>y;
}
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);cin>>n>>k;if(n*2/k<(1+k)){//由于(k+1)*k可能会超过long long所以进行了变式cout<<-1;return 0;}for(int i=1;i<=sqrt(n);i++){if(n%i==0){//枚举因数g.push_back(i);	g.push_back(n/i);}}sort(g.begin(),g.end(),cmp);//从大到小排m=g.size();for(int i=0;i<m;i++){a[i]=n/g[i];
//		cout<< g[i]<<' '<<a[i]<<endl;} for(int i=0;i<m;i++){if(a[i]*2/k<(1+k)) continue;int sum=0;for(int j=1;j<k;j++){cout<<j*g[i]<<' ';sum+=j*g[i];}cout<<n-sum;return 0;}return 0;
}
http://www.jsqmd.com/news/140187/

相关文章:

  • 观bilibi《超强动画,一步一步一步深入浅出解释Transformer原理!》有感
  • 性能测试中关于硬件环境的测试
  • Java-Spring 依赖注入详解--多个类实现与选择 - 若
  • 一键激活 Windows 与 Office 的轻量绿色工具!
  • centos7配置yum软件源
  • 2025年西安电子科技大学计算机考研复试机试真题(附 AC 代码 + 解题思路)
  • 学长亲荐8个AI论文工具,研究生轻松搞定开题报告!
  • 2025最新!9款AI论文软件测评:本科生写论文痛点全解析
  • ubuntu虚拟机mysql数据库忘记密码
  • Selenium + 超级鹰实现猎聘网滑块验证码自动登录
  • 2025年北京邮电大学计算机考研复试机试真题(附 AC 代码 + 解题思路)
  • 「AI元人文构想」对话全记录:从困境、构想到系统自洽的七十日
  • 链表|160.相交链表234.回文指针141环形链表
  • Linux中级の自动运维工具Ansible基础
  • 【图数据库与知识图谱入门】3.5 知识图谱的典型应用场景
  • 04. 绘图功能
  • AcWing 338:计数问题 ← 数位DP
  • Java-Spring 依赖注入详解 - 从零开始理解 - 若
  • 在 Cloud SQL for PostgreSQL 上启用 pgvector
  • Doris为2.1版本,但json_each不可以用解决方法
  • 《创业之路》-754-《架构思维:从程序员到CTO》第二部分:架构师的六大生存法则与启发
  • Nature Genetics | 本周最新文献速递
  • Java 反射机制解析:从基础概念到框架实践 - 教程
  • 微信小程序uniapp-vue校园租房指南房屋租赁
  • 模型调优技巧:提升准确率的10种实用方法
  • 149_尚硅谷_数组应用实例(1)
  • PCIe-浅谈Transaction ID和Tag(2)
  • 数据增强(Data Augmentation)策略大全
  • 软件缺少vfp9r.dll文件 无法启动运行问题 下载修复方法
  • 微信小程序uniapp-vue校园网络维修报修平 多媒体设备报修