Maximal GCD

题目链接:http://codeforces.com/contest/803/problem/C

    ——每天在线,欢迎留言谈论。

题目大意:

给你n,k(1<=n,k<=1e10)。

要你输出k个数,满足以下条件:

①这k个数之和等于n

②严格递增

②输出的 这k个数 的最大公约数q是同样满足①②条件中的最大的!

思路:

一、先找出这个符合条件的最大的q:

①q一定是n的 公约数

②q*(1+2+···+k)<=n 时的q就可以成为共约数(因为输出时 只需要把k增大到m,m满足 1+2+··+(k-1)+m=n/q 就可以)

③在n的公约数中从大到小遍历是否符合条件即可。

↓ ↓ ↓ ↓ 不超时的一种 遍历公约数 的思想!

只需要通过for(long long i=1;i<sqrt(n);i++)来找出最大的那个q

假如2是他的一个约数,那么n/2也是。3是的话n/3也是。所以循环到sqrt(n)即可。最多1e5次循环 不会超T。

二、输出这k个数

q*a1,q*a2,q*a3 ······ q*ak(没有,号,只是好看)

其中的{a1,a2,a3···ak}={1,2,3 ··· (k-2) , (k-1) , ((n/q)- sum)}(sum=1+2+···+(k-1))

PS注意:k好大时 long long 也装不下(1+2+···+k)!(不说太清楚,自己体会,哈哈...)

AC代码:

 #include <iostream>
#include <cmath>
using namespace std;
int main()
{//1<=n,k<=1e10
long long n,k,sqr,cadd,q;//q为最大公约数
cin>>n>>k;
if(k>)
{
cout<<"-1"<<endl;return ;
}
cadd=(+k)*k/;sqr=sqrt(n);q=;
for(long long i=;i<=sqr;i++)
{
if(n%i==)
{
if(i>=cadd)
{q=n/i;break;}
else if(n/i>=cadd)
q=i;
}
}
//cout<<q<<endl;
if(!q)
{
cout<<"-1"<<endl;return ;
}
long long sum=,i;
for(i=;i<k;i++)
{
cout<<i*q<<" ";sum+=i;
}
cout<<q*(n/q-sum)<<endl;
return ;
}

2017-05-04 14:06:58 -> 2017-05-05 12:51:05 -> 2017-05-05 20:45:26

codeforces 803C Maximal GCD(GCD数学)的更多相关文章

  1. Codeforces 803C. Maximal GCD 二分

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

  2. CodeForces - 803C Maximal GCD 【构造】

    You are given positive integer number n. You should create such strictly increasing sequence of k po ...

  3. Codeforces 803C. Maximal GCD

    题目链接:http://codeforces.com/contest/803/problem/C 中了若干trick之后才过... k个数的严格递增序列最小权值和就是${n*(n+1)/2}$,枚举这 ...

  4. AC日记——Maximal GCD codeforces 803c

    803C - Maximal GCD 思路: 最大的公约数是n的因数: 然后看范围k<=10^10; 单是答案都会超时: 但是,仔细读题会发现,n必须不小于k*(k+1)/2: 所以,当k不小于 ...

  5. CodeForce-803C Maximal GCD(贪心数学)

    Maximal GCD CodeForces - 803C 现在给定一个正整数 n.你需要找到 k 个严格递增的正整数 a1, a2, ..., ak,满足他们的和等于 n 并且他们的最大公因数尽量大 ...

  6. HDU 5726 GCD (2016多校、二分、ST表处理区间GCD、数学)

    题目链接 题意 : 给出一个有 N 个数字的整数数列.给出 Q 个问询.每次问询给出一个区间.用 ( L.R ) 表示.要你统计这个整数数列所有的子区间中有多少个和 GCD( L ~ R ) 相等.输 ...

  7. Bash and a Tough Math Puzzle CodeForces 914D 线段树+gcd数论

    Bash and a Tough Math Puzzle CodeForces 914D 线段树+gcd数论 题意 给你一段数,然后小明去猜某一区间内的gcd,这里不一定是准确值,如果在这个区间内改变 ...

  8. Codeforces 475D CGCDSSQ 区间gcd值

    题目链接 题意 给定一个长度为 \(n\) 的数列 \(a_1,...,a_n\) 与 \(q\) 个询问 \(x_1,...,x_q\),对于每个 \(x_i\) 回答有多少对 \((l,r)\) ...

  9. Codeforces 992 范围内GCD,LCM要求找一对数 衣柜裙子期望

    A /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) using namespace std ...

随机推荐

  1. 搭建ftp服务器实现文件共享

    FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务. FTP(File Transfer Protocol ...

  2. JNDI常见配置方式

    JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用 ...

  3. C++移位运算符详解

    移位运算符包括左移"<<"和右移">>" 左移运算符<<: 1.无符号 语法格式:需要移位的数字<<移位的次数n ...

  4. php人员权限管理(RBAC)

    在说权限管理前,应该先知道权限管理要有哪些功能: (1).用户只能访问,指定的控制器,指定的方法 (2).用户可以存在于多个用户组里 (3).用户组可以选择,指定的控制器,指定的方法  (4).可以添 ...

  5. 用webstorm自动编译less产出css和sourcemap

    css产出sourcemap有什么用呢,可能大家要问这个问题了. 请移步这里 https://developers.google.com/chrome-developer-tools/docs/css ...

  6. Spring初识(通过小实例清晰认识Spring)

    1.spring架构: spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts框架,iba ...

  7. Nuget Server 搭建

    每个女人都有很多包包:其实男人也有,但只有会写程序的男人才有 -- 代码世界中的大"包"小"包".这些大包小包,有花钱买的,有从开源市场淘的,也有自己或同事亲手 ...

  8. php中奖算法逻辑

    最近公司有两个活动, 一个是砸蛋活动, 另一个是转盘活动. 后台这边需要做接口进行对接,当用户在前台点击进行抽奖的时候,发送AJAX请求给后台,后台进行业务处理包括记录用户中奖信息,然后返回json格 ...

  9. [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(二)

    一步步打造一个简单的 MVC 电商网站 - BooksStore(二) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore 前: ...

  10. Nginx+Tomcat动静分离脚本

    #!/bin/bashsetenforce 0systemctl stop firewalldtar -zxvf nginx-1.8.0.tar.gz -C /usr/src/ cd /usr/src ...