#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