Codeforces 803C Maximal GCD 题解
来源:互联网 发布:淘宝冲印照片哪家好 编辑:程序博客网 时间:2024/05/21 17:37
题意
找到和为n的k个严格递增的正整数,使得它们的GCD最大,如果没有,输出-1
思路
首先,考虑n和k的范围,发现k>200000 时必然无解(当然这个范围还可以扩大),因为就算是从1开始的公差为1的序列和都会超过n的最大范围。其次,这个最大GCD肯定是n的一个约数,所以我们可以先求出n的所有约数,然后从大到小检验,检验的方法是先对n除以这个约数,然后看它和1+2+3+...+k 的大小关系,如果它不小于这个和就可以了,就让前k-1个数是1至k-1倍的这个约数,用最后那个数凑出和为n就可以了
代码
#include <cstdio>#include <vector>#include <cmath>#include <algorithm>using namespace std;vector<long long> divv;int main(){ long long n,k,e,f; scanf("%I64d%I64d",&n,&k); if(k>200000) printf("-1\n"); else { e=sqrt(n); for(long long i=1;i<=e;i++) if(n%i==0) { divv.push_back(i); if(i*i!=n) divv.push_back(n/i); } sort(divv.begin(),divv.end()); f=0; for(long long i=divv.size()-1;i>=0;i--) if(n/divv[i]>=k*(k+1)/2) { f=divv[i]; break; } if(f==0) printf("-1\n"); else { for(long long i=0;i<k-1;i++) { printf("%I64d ",f*(i+1)); n-=f*(i+1); } printf("%I64d\n",n); } } return 0;}
0 0
- Codeforces 803C Maximal GCD 题解
- codeforces 803C Maximal GCD
- 【Codeforces 803 C. Maximal GCD】
- Codeforces 803C Maximal GCD【思维】
- 803C Maximal GCD
- Educational Codeforces Round 20-C. Maximal GCD
- Maximal GCD CodeForces
- Codeforces 803A Maximal Binary Matrix 题解
- Educational Codeforces Round 20 C || Codeforces803C Maximal GCD (水题)
- codeforce 803C Maximal GCD(构造)
- CF 803C Maximal GCD 枚举,构造
- Maximal GCD
- Maximal GCD
- 【Codeforces 798 C】+ gcd
- Codeforces 338D GCD Table 题解&代码
- codeforces 585C题解
- Codeforces-708C题解
- Codeforces 583C GCD Table 【gcd + 构造】
- 二、HDFS
- Java并发笔记二——sychronization
- Android开发命名规范和编码规范
- PAT A 1051
- 取模运算的另一种实现
- Codeforces 803C Maximal GCD 题解
- 利用link的rel=“alternate stylesheet”实现类似夜间模式的这类换肤功能
- 将后台List对象以Json格式返回到前台Ajax请求
- 乌班图下基于openssl的密码学实验
- sdust 2681 求个最大值 (数学+思维)
- C语言学习历程——编程练习2——02
- 精讲WEB前端之Flex弹性盒模型属性,对比每一属性值和效果
- jQuery动画
- 1、MAC常用工具汇总一