Codeforces 803C Maximal GCD【思维】
来源:互联网 发布:游戏监测软件 编辑:程序博客网 时间:2024/06/10 06:41
You are given positive integer number n. You should create suchstrictly increasing sequence of k positive numbers a1, a2, ..., ak, that their sum is equal ton and greatest common divisor is maximal.
Greatest common divisor of sequence is maximum of such numbers that every element of sequence is divisible by them.
If there is no possible sequence then output -1.
The first line consists of two numbers n andk (1 ≤ n, k ≤ 1010).
If the answer exists then output k numbers — resulting sequence. Otherwise output-1. If there are multiple answers, print any of them.
6 3
1 2 3
8 2
2 6
5 3
-1
题目大意:
让你找到长度为K的严格递增序列,使得其GCD最大的同时,ΣAi==n.
思路:
很显然,GCD最大无论多大,都一定是n的因子。
那么O(sqrt(n))去枚举n个因子数num,然后贪心的去想,因为是GCD的值,我们严格递增的递增程度为Ai-Ai-1==num即可。
那么就相当于等差数列求和,那么我们判断k*num+(k*(k-1))*num/2是否小于等于n即可,如果是,那么我们对应维护一个最大可行因子数。
然后按照等差数列写出前k-1项,对于多出来的部分赋予第k项即可。
注意这个题四处都充满着爆LL的情况。
所以我们注意不要让数据爆LL的细节都要处理好。
Ac代码:
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#include<math.h>using namespace std;#define ll __int64int getlen(ll a,ll b){ int cnt=0; while(a) { cnt++; a/=10; } while(b) { cnt++; b/=10; } return cnt;}int main(){ ll sum,n; while(~scanf("%I64d%I64d",&sum,&n)) { if(n>1e6) { printf("-1\n"); continue; } ll output=-1; for(ll i=1;i<=sqrt(sum);i++) { if(sum%i==0) { if(getlen(n*(n-1),i)<=15&&i*n+(n*(n-1))*i/2<=sum) { output=max(i,output); } if(getlen(n*(n-1),sum/i/2)<=15&&(sum/i)*n+(n*(n-1))*(sum/i)/2<=sum) { output=max(sum/i,output); } } } if(output==-1)printf("-1\n"); else { ll tmp=0; for(ll i=1;i<=n;i++) { if(i<n)printf("%I64d ",i*output),tmp+=i*output; else { printf("%I64d\n",sum-tmp); } } } }}
- 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
- Codeforces803C Maximal GCD 思维
- Maximal GCD CodeForces
- Educational Codeforces Round 20 C || Codeforces803C Maximal GCD (水题)
- codeforce 803C Maximal GCD(构造)
- CF 803C Maximal GCD 枚举,构造
- CodeForces 581C - GCD Table(思维)
- CodeForces 803A Maximal Binary Matrix-【思维+构造】
- CF803C:Maximal GCD(思维 & 构造)
- Maximal GCD
- Maximal GCD
- 【Codeforces 798 C】+ gcd
- Codeforces 798C Mike and gcd problem【思维+贪心】好题!
- iOS和Mac开发区别
- listing宏包传入代码 英文右移问题
- Effective Java学习有感(一)---创建和销毁对象
- iOS开发应用上架必读最新苹果审核规则
- Docker搭建disconf环境,三部曲之三:细说搭建过程
- Codeforces 803C Maximal GCD【思维】
- 卫星效果的实现(上下方向)
- JAVA-11.2-登陆注册案例分析(集合版)
- spark处理HDFS文件
- 样本进行有序聚类(最优切割)
- node-canvas模块使用
- ionic入门之开始使用ionic框架
- qt输出txt乱码
- Linux权限管理——基本权限