保证有
#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;
// 注意类名必须为 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);
}
} import sys for line in sys.stdin: a = line.split() x,y = int(a[0]) ,int(a[1]) print((x-1)*'1 '+ str(y-x+1))无脑用n-1 个1相加如何呢