蛇形填充上三角c++

求代码?
一个 n 行的蛇形矩阵是由 1 开始的自然数依次排列成的一个矩阵上三角形。

第一行有 n 个数,接下来每行逐减。具体的规律参考样例。
样例输入1
5
样例输出1
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
样例输入2
6
样例输出2
1 3 6 10 15 21
2 5 9 14 20
4 8 13 19
7 12 18
11 17
16


#include<stdio.h>
int main()
{
    int i,j,n,k,a=1,b=1;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        b=a;
        a=a+i;
        k=i+1;
        for(j=i;j<=n;j++)
        {
            if(j==0)
            {
                printf(" %d\n",b);
            }
            else
            {
                printf(" %d",b);
            }
            b+=k;
            k++;
        }
printf("\n");
    }
    return 0;
}


#include <stdio.h>
#include <stdlib.h>

int main()
{
int i, j, n;

scanf("n = %d", &n);
for (i = 0; i < n; ++i)
{
    for (j = 0; j < n - i; ++j)
    {
        printf("%d ", (i + j + 1) * (i + j + 2) / 2 - i);
    }
    printf("\n");
}

return 0;

}