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. Linux查看程序端口占用

    使用命令: 1.ps -aux | grep 80 2.使用命令:netstat –apn 查看所有的进程和端口使用情况.

  2. ACE_DEBUG buffer

    ACE中输出日志时,发现太长会被截断. 1.测试 ] = {}; ACE_OS::memset(buf,); ACE_DEBUG((LM_INFO, ACE_TEXT("##@@##[ %s ...

  3. 《Cracking the Coding Interview》——第17章:普通题——题目7

    2014-04-28 23:28 题目:给定一个数字,用英语把它读出来. 解法:ZOJ上有相反的题目.如果我要用中文读书来呢? 代码: // 17.7 Read an integer in Engli ...

  4. 【Gradient Boosted Decision Tree】林轩田机器学习技术

    GBDT之前实习的时候就听说应用很广,现在终于有机会系统的了解一下. 首先对比上节课讲的Random Forest模型,引出AdaBoost-DTree(D) AdaBoost-DTree可以类比Ad ...

  5. katalon系列二:selenium IDE的替代者——Katalon Recorder

    Katalon Recorder是和selenium IDE一样的一个浏览器插件,可以录制web上的操作并回放,但我个人感觉Katalon Recorder更好用.大家可以直接在chrome商店下载安 ...

  6. ul中li元素横向排列且不换行

    ul { white-space: nowrap; } li { display: inline-block; }     white-space 属性设置如何处理元素内的空白. normal 默认. ...

  7. finally在return之后还是之前运行

    finally在运行前打印出来是return的数据,finally是最后修改的数据,如果finally存在对返回值的修改,则以finally修改的值为准. 综上所述,finally最后运行.

  8. Mysql忘记root密码怎么办?(已解决)

    为了写这篇文档,假装一下忘记密码!!!! 首先我数据库是正常的,可以使用. root@localhost:~# mysql -uroot -p mysql> mysql> show dat ...

  9. C#向上转型与向下转型(转)

    原文地址:https://blog.csdn.net/wangqingbo0829/article/details/48474173 向上转型:将子类对象转为父类对象.此处父类对象可以是接口. 向下转 ...

  10. lombok 去除麻烦的实体类get和set,toString书写

    首先在pom.xml中添加 <dependency> <groupId>org.projectlombok</groupId> <artifactId> ...