#include<iostream>
#include<vector>
#include<string>
#include<set>
#include<map>
#include<algorithm>
#include<queue>
#include<list>
#include<stack>
#include<cstdio>
#include<fstream>
#include<numeric>
#include<functional>
#include<utility>
#include<memory>
using namespace std;
using namespace placeholders;
typedef long long ll;
int main(){
ll n, k;
while (cin >> n >> k){
if ((1 + k)*k / 2 > n || k>1000000){
cout << "-1" << endl;
continue;
}
vector<ll> factor;
for (ll i = 1; i <= sqrt(n); i++){
if (n%i == 0){
factor.push_back(i);
factor.push_back(n / i);
}
}
sort(factor.begin(), factor.end());
bool flag = false;
vector<ll> result;
for (ll i = 0; i < factor.size(); i++){
ll sum = k*(k - 1) *factor[i] / 2;
ll remain = n - sum;
if (remain >(k - 1)*factor[i] && remain%factor[i] == 0){
flag = true;
result.clear();
for (ll j = 1; j < k; j++) result.push_back(j*factor[i]);
result.push_back(remain);
}
else if (remain<(k - 1)*factor[i]){
break;
}
}
if (flag){
for (int i = 0; i < result.size(); i++) cout << result[i] << " ";
cout << endl;
}
else{
cout << "-1" << endl;
}
}
return 0;
}
803C Maximal GCD
最新推荐文章于 2024-03-29 11:56:01 发布