此题难度不算大,但是需要逻辑能力,需要知道如何分配数据。

#include <stdio.h>

void  num(int  n,long  long  m)

{

    long  long  a[n];//定义一个数组,用来储存元素

    for (int  i=0;i<n;i++)//首先初始化元素,方便后续操作

    {

        a[i]=1;

    }

    long  long  s=m-n;//这里举个例子,前面的元素已经初始化了,比如n=5,m=10,a[5]={1,1,1,1,1},全部加起来后和10还相差5,所以这里将他们的差存储为s

    for (int  i=0;i<n&&s>0;i++)//接上面,a[5]={1,1,1,1,1},所以将剩余的值加到第一个数,a[5]={6,1,1,1,1},此时s=0,跳出循环,每个元素相加刚好为10

    {

        long  long  add=s;

        a[i]+=add;

        s-=add;

    }

    for (int  i=0;i<n;i++)//循环输出每个元素

    {

        printf("%lld ",a[i]);

    }

    printf("\n");

}

int main() {

    int  n;

    long  long  m;

    scanf("%d%lld",&n,&m);

    num(n,m);

    return 0;

}