803C - Maximal GCD

思路:

  最大的公约数是n的因数;

  然后看范围k<=10^10;

  单是答案都会超时;

  但是,仔细读题会发现,n必须不小于k*(k+1)/2;

  所以,当k不小于10^5时直接-1就好;

  我们可以构造出gcd为1的序列为

    1,2,3,4……n-k+1;

  然后一个个枚举n的因子p;

    1*p,2*p,3*p……(n-k+1)*p;

  当枚举的p使得序列不满足于严格递增时,结束,输出合法答案;

来,上代码:

#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; #define ll long long long long n,k; int main()
{
cin>>n>>k;
if(k==)
{
cout<<n;
return ;
}
if(n<k||k>||k==)
{
cout<<-;
return ;
}
long long c=k*(k+)/;
if(n<c)
{
cout<<-;
return ;
}
ll p=n/c,last=;
for(ll i=;i<=sqrt(n)+;i++)
{
if(n%i) continue;
ll ok=,sum=n;
for(ll j=;j<k;j++)
{
sum-=j*i;
if(sum<=j*i) ok=false;
}
if(sum<=i*(k-)) ok=false;
if(ok) last=i;
else break;
}
for(ll i=sqrt(n)+;i>=;i--)
{
if(n%i) continue;
ll a=n/i;
ll ok=,sum=n;
for(ll j=;j<k;j++)
{
sum-=j*a;
if(sum<=j*a) ok=false;
}
if(sum<=a*(k-)) ok=false;
if(ok) last=a;
else break;
}
ll sum=n;
for(ll i=;i<k;i++) printf("%lld ",i*last),sum-=i*last;
printf("%lld",sum);
return ;
}

最新文章

  1. java视频教程 Java自学视频整理(持续更新中...)
  2. SSM框架整合总结
  3. ppa安装php版本
  4. android 自定义百度地图放大缩小
  5. 450A - Jzzhu and Children 找规律也能够模拟
  6. iOS中正则表达式的三种使用方式
  7. iOS 错误之 NSObject 、CGFloat
  8. web工程导入新环境的注意事项
  9. 服务器Windows Server 2008 远程控制安全设置技巧
  10. 数据结构 栈&amp;队列
  11. Linux命令行总结
  12. js + 加号 报错,IIS 配置
  13. SpringBoot前后端分离Instant时间戳自定义解析
  14. QML 用QSortFilterProxyModel实现搜索功能
  15. GNOME禁用GDM中night-light功能
  16. 整理整理Linux命令
  17. 在IDEA中将项目部署到Tomcat的方法及两种模式的区别
  18. shell 编程每日100行
  19. Java第09次实验(IO流)
  20. Sequence 加速

热门文章

  1. VS Extension+NVelocity系列(一)&mdash;&mdash;构建一个简单的NVelocity解析环境
  2. 《Cracking the Coding Interview》——第18章:难题——题目7
  3. USACO Section1.4 Mother&#39;s Milk 解题报告
  4. 孤荷凌寒自学python第十五天python循环控制语句
  5. initialization of &#39;zf&#39; is skipped by &#39;case&#39; label原因及解决方法
  6. PEAR DB 事务相关
  7. 六、vue侦听属性
  8. BZOJ 2438:杀人游戏(tarjan+概率)
  9. 【CF #313】
  10. 看了就学会之React redux入门示例