• 暑假集训Day14 G (gcd 数学)


    题目链接在这里:Problem - G - Codeforces

    这题涉及到gcd,然后要把n拆分成k个数,这k个不同的数gcd最大。我们从一般的构造开始想,如果这k个数为1,2,...k,加起来比n大了,那一定就构造不出来。然后我们可以知道这个gcd一定是n的一个因数,所以我们可以枚举这个因数(这个操作在涉及gcd的问题中非常常见),剩下的就是1,2...k-1,n-sigma(1~k-1).

     1 #include "bits/stdc++.h"
     2 using namespace std;
     3 typedef long long LL;
     4 LL n,k,m;
     5 LL g,an;
     6 bool flag;
     7 inline LL mx(LL x,LL y){return x>y?x:y;}
     8 int main(){
     9     freopen ("g.in","r",stdin);
    10     freopen ("g.out","w",stdout);
    11     LL i,j,zt;
    12     scanf("%lld%lld",&n,&k);
    13     flag=false;
    14     m=(1+k)*k/2;
    15     an=0;
    16     if (2*n/k<k+1){printf("-1");return 0;}
    17     for (i=1;i*i<=n;i++){
    18         if (n%i!=0)continue;
    19         g=n/i;
    20         if (i>=m) {an=g;break;}
    21         if (g>=m) {an=i;}
    22         else break;
    23     }
    24     //cout<<an<<endl;
    25     if (an==0) printf("-1");
    26     else{
    27         for (i=1;i<k;i++) printf("%lld ",an*i);
    28         printf("%lld",an*(k+n/an-m));
    29     }
    30     return 0;
    31 }
    未来是什么样,未来会发生什么,谁也不知道。 但是我知道, 起码从今天开始努力, 肯定比从明天开始努力, 要快一天实现梦想。 千里之行,始于足下! ——《那年那兔那些事儿》
  • 相关阅读:
    【刷题】洛谷 P4319 变化的道路
    【刷题】BZOJ 4573 [Zjoi2016]大森林
    CSS3_天猫商品墙
    CSS3_3D 变换
    CSS3_扇形导航_transitionend 事件
    CSS3_过渡_2D 变换_瓶体旋转_动态时钟
    CSS3_多列布局
    CSS3_线性渐变_径向渐变----背景
    CSS3_盒子背景
    CSS3_盒阴影_倒影_盒子大小可调
  • 原文地址:https://www.cnblogs.com/keximeiruguo/p/15072961.html
Copyright © 2020-2023  润新知