思路:题意大概是找出n个数,使得 a12 + a22 + … + an2 ≥ x
a1 + a2 + … + an ≤ y
由于 (x1+x2)2>x12+x2^2故,只需要使一个数最大,其他数为1就能得出结果。 这个数为y-n+1 若 (y<n||(y - n + 1) * (y - n + 1) + n - 1 < x) 说明无法满足条件。否则满足条件,输出y-n+1,1,1,1,1,…1
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main(){
unsigned long long n,x,y;
cin>>n>>x>>y;
if (y<n||(y - n + 1) * (y - n + 1) + n - 1 < x){
cout << -1;
return 0;
}
cout << y - n + 1<< endl;
for (int i = 1; i < n; i++){
cout << 1 << endl;
}
}