保证有
#include <iostream>
#include <vector>
using namespace std;
int main () {
int n, m;
cin >> n >> m;
int extra = m - n; // 计算额外需要分配的数值(初始每个数为 1,总和为 n)
vector<int> res (n, 1); // 初始化数组为 n 个 1
// 从第二个数开始,尽量让序列保持递增
for (int i = 1; i < n && extra> 0; ++i) {
// 确保当前数至少比前一个数大 1,计算需要的增量
int need = res [i-1] + 1 - res [i];
// 实际分配的增量(不超过剩余的 extra)
int add = min (need, extra);
res [i] += add;
extra -= add;
}
// 若还有剩余的数值,全部加到最后一个数上(不破坏递增性)
if (extra> 0) {
res.back () += extra;
}
// 输出结果
for (int i = 0; i < n; ++i) {
cout << res [i] << (i == n-1 ? "\n" : " ");
}
return 0;
} 亲测通过
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//前n-1各元素为1,最后一个m-(n-1)
int n = in.nextInt();
int m = in.nextInt();
for(int i = 0; i < n-1; i++){
System.out.print(1+" ");
}
System.out.print(m-n+1);
}
} public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
int n = in.nextInt();
int m = in.nextInt();
int x = m - n;
/**
* 分析:m = n+x = (1..1 + 2 + x) n个
* 第n个数必然是m-n
* 前n-2个数必然全是1
* 第n-1个数必须是2
* 特例:n=1 和 n=m 情况
*/
if (n == 1) { // n=1
System.out.println(m);
break;
}
for (int i = 0; i < n-1; i++) {
if (i < n - 1) {
System.out.print(1 + " ");
} else if (i == n - 1) {
if (x > 0) {
System.out.print(2 + " ");
} else {
System.out.print(1 + " ");
}
}
}
if (x > 0) {
System.out.print(x);
} else {// n=m
System.out.print(1);
}
}
} import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
// while (in.hasNextInt()) { // 注意 while 处理多个 case
int n = in.nextInt();
int m = in.nextInt();
for(int i=0;i<n-1;i++){
System.out.print("1 ");
}
System.out.print(m-n+1);
}
} public class Program {
public static void Main() {
string line=System.Console.ReadLine();
string[] tokens = line.Split();
int n =int.Parse(tokens[0]);
int m= int.Parse(tokens[1]);
for(int i=1;i<n;++i) System.Console.Write("1 ");
System.Console.Write(m-n+1);
}
}