题解 [CF803C] Maximal GCD】的更多相关文章

题面 解析 一开始以为这题很难的... 其实只要设\(d\)为\(a\)的最大公因数, 即\(a[i]=s[i]*d\), 因为\(n=\sum_{i=1}^{n}a[i]=\sum_{i=1}^ns[i]*d=d*\sum_{i=1}^ns[i]\). 所以\(d\)一定是\(n\)的约数, 因此从大到小枚举\(d\), 判断能否构造\(k\)个\(s[i]\)就行了. 判断也很简单, 只要\(\sum_{i=1}^ki=(k+1)*k/2<=n/d\), 然后将\(s[i=1\)~\(k-1…
Maximal GCD 题目链接:http://codeforces.com/contest/803/problem/C 题目大意: 给你n,k(1<=n,k<=1e10). 要你输出k个数,满足一下条件: ①这k个数之和等于n ②每个满足①条件的数列有最大公约数q,输出q最大的数列. 思路: 我们只需要找出这个最大的q是什么.q满足: ①q是n的 公约数 ②n/q>=(1+2+3+···+k) ③q是满足①②中的最大的 只需要通过for(long long i=1;i<sqrt(…
C. Maximal GCD time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output You are given positive integer number n. You should create such strictly increasing sequence of k positive numbers a1, a2, ...…
C. Maximal GCD time limit per test: 1 second memory limit per test: 256 megabytes input: standard input output: standard output You are given positive integer number n. You should create such strictly increasing sequence of k positive numbers a1, a2,…
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 &l…
C. Maximal GCD time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output You are given positive integer number n. You should create such strictly increasing sequence of k positive numbers a1, a2, ...…
题目描述: H. Maximal GCD time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output You are given positive integer number n. You should create such strictly increasing sequence of k positive numbers a1, a…
Maximal GCD CodeForces - 803C 现在给定一个正整数 n.你需要找到 k 个严格递增的正整数 a1, a2, ..., ak,满足他们的和等于 n 并且他们的最大公因数尽量大. 如果不可能请输出 -1. 这k个数的gcd的必定是n的因数,于是变成枚举n的因数,可以知道只需要枚举 1~sqrt(n) 范围内满足 n%i==0 的因数就行,复杂度就变成10的5次方了.然后贪心,要使得递增序列的公因子最大,先从大到小枚举因数 n/i ,没找到满足的因数再从小到大枚举因数 i.…
题目链接 戳我 \(Solution\) 令\(gcd\)为\(x\),那么我们将整个序列\(/x\),则序列的和就变成了\(\frac{n}{x}\),所以\(x\)必定为\(n\)的约数所以现在就是要构造出一个序列长度为\(k\),和为\(\frac{n}{x}\).我们令前\(k-1\)个为\(1,2....k-1\)最后一个再用\(\frac{n}{x}-\)这\(k-1\)个的和就是最后一个数了.最后的答案就是构造出来的序列\(*x\) 所以我们现在就是要来判断\(x\)可不可行,很明…
You are given positive integer number n. You should create such strictly increasingsequence of k positive numbers a1, a2, ..., ak, that their sum is equal to n and greatest common divisor is maximal. Greatest common divisor of sequence is maximum of…