求助优化
查看原帖
求助优化
561529
Infinite_Energy楼主2023/4/1 19:48
#include<bits/stdc++.h>
using namespace std;
long long n,k,maxx;
long long read(){
	char ch=getchar();
	long long sgn=1,x=0;
	while(ch<'0'||ch>'9'){
		if(ch=='-'){
			sgn=-1;
		}
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		x=(x<<3)+(x<<1)+(ch&15);
		ch=getchar();
	}
	return x*sgn;
}
void write(long long n,bool p){
	if(n<0){
		putchar('-');
		n=-n;
	}
	if(n==0){
		if(p==true){
			putchar('0');
		}
		return;
	}
	write(n/10,0);
	putchar(n%10+'0');
}
int main(){
	n=read();
	k=read();
	if(k==1){
		write(n,1);
		return 0;
	}
	if(k>=1000000||k*(k+1)/2>n){
		write(-1,1);
		return 0;
	}
	for(int i=1;i*i<=n;i++){
		if(n%i==0){
			if((k*(k+1)>>1)<=i){
				maxx=max(maxx,(long long)(n/i));
			}
			if((k*(k+1)>>1)<=n/i){
				maxx=max(maxx,(long long)(i)); 
			}
		}
	}
	for(int i=1;i<=k-1;i++){
		write(i*maxx,1);
		putchar(' ');
		n-=i*maxx;
	}
	write(n,1);
	return 0;
}

莫名其妙被第20个点卡,时间复杂度没问题,求好心人优化一下QAQ

2023/4/1 19:48
加载中...