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 ;
}

AC日记——Maximal GCD codeforces 803c的更多相关文章

  1. Maximal GCD CodeForces - 803C (数论+思维优化)

    C. Maximal GCD time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  2. AC日记——Success Rate codeforces 807c

    Success Rate 思路: 水题: 代码: #include <cstdio> #include <cstring> #include <iostream> ...

  3. AC日记——Cards Sorting codeforces 830B

    Cards Sorting 思路: 线段树: 代码: #include <cstdio> #include <cstring> #include <iostream> ...

  4. AC日记——Card Game codeforces 808f

    F - Card Game 思路: 题意: 有n张卡片,每张卡片三个值,pi,ci,li: 要求选出几张卡片使得pi之和大于等于给定值: 同时,任意两两ci之和不得为素数: 求选出的li的最小值,如果 ...

  5. AC日记——T-Shirt Hunt codeforces 807b

    T-Shirt Hunt 思路: 水题: 代码: #include <cstdio> #include <cstring> #include <iostream> ...

  6. AC日记——Magazine Ad codeforces 803d

    803D - Magazine Ad 思路: 二分答案+贪心: 代码: #include <cstdio> #include <cstring> #include <io ...

  7. AC日记——Broken BST codeforces 797d

    D - Broken BST 思路: 二叉搜索树: 它时间很优是因为每次都能把区间缩减为原来的一半: 所以,我们每次都缩减权值区间. 然后判断dis[now]是否在区间中: 代码: #include ...

  8. AC日记——Array Queries codeforces 797e

    797E - Array Queries 思路: 分段处理: 当k小于根号n时记忆化搜索: 否则暴力: 来,上代码: #include <cmath> #include <cstdi ...

  9. AC日记——Vicious Keyboard codeforces 801a

    801A - Vicious Keyboard 思路: 水题: 来,上代码: #include <cstdio> #include <cstring> #include < ...

随机推荐

  1. loj2174 「FJOI2016」神秘数

    先考虑一下一个集合怎么用 \(O(n)\) 时间求出来,然后用主席树推广到一个序列就可以了.大致思想就是考虑一个数的权值和它前面的数的和的关系. #include <algorithm> ...

  2. DataGridView重查后,返回原来所在行

    首先记录选中行 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 //查询前记录选中行 int _currentRow = 0; //int _cu ...

  3. linux文件上传下载笔记(rz,sz,sftp,scp)命令

    软件(包)安装/卸载 yum -y install 包名(支持*) :自动选择y,全自动yum install 包名(支持*) :手动选择y or nyum remove 包名(不支持*)rpm -i ...

  4. Jforum环境之Tomcat环境搭建

    Jforum环境搭建,需先安装JDK.JRE.Tomcat.Mysql(JDK.JRE暂不做说明).本文先说Tomcat环境搭建 1.进入Apache Tomcat官网下载,我选择的是免安装的zip包 ...

  5. tomcat运行solr

    https://blog.csdn.net/u010346953/article/details/67640036

  6. shell之一些测试脚本

    比较文件有无修改,通过修改时间判别 # !/bin/bash dir=$ for file in `ls $dir` do if [ -d $dir/$file ] then echo $file i ...

  7. 团队项目-第一次Scrum 会议

    时间:10.23 时长:30分钟 地点:F楼2层沙发休息处 工作情况 团队成员 已完成任务 待完成任务 解小锐 学习使用cocos creator 学习官方样例 陈鑫 学习JavaScript 学习c ...

  8. ocrosoft Contest1316 - 信奥编程之路~~~~~第三关 问题 L: 大整数减法

    http://acm.ocrosoft.com/problem.php?cid=1316&pid=11 题目描述 求两个大的正整数相减的差.   输入 共2行,第1行是被减数a,第2行是减数b ...

  9. MyBatis中使用OGNL表达式与操作符

    String与基本数据类型 _parameter 自定义类型(对象) 属性名 集合 数组 array List list Map _parameter 获取集合中的一条数据 数组 array[索引] ...

  10. NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet

    springMVC 内嵌jetty时,出现了NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet: 添加了 ...