3 条题解

  • 1

    本题关键为注意到二维数组第i行第j列为所输入原数组的第i+j-1项(i+j-1 <= m时),

    i+j-1>m是发现其有周期为m,故将i+j-1不断做**-m的操作直到其小于等于m**;

    代码如下:

    #include<bits/stdc++.h>
    using namespace std;
    int a[10010],p[100][100];
    int main()
    {
        int m,f;
        cin>>m;
        for(int i=1;i<=m;i++)
        {
            cin>>a[i];
        }
        for(int i=1;i<=m;i++)
        {
            for(int j=1;j<=m;j++)
        {
            f=i+j-1;
            if(f<=m)
            {
                p[i][j]=a[f];
            }
            else
            {
                while(f>m)
                {
                    f-=m;
                }
                if(f<=m)
                {
                    p[i][j]=a[f];
                }
            }
        }
        }
        for(int i=1;i<=m;i++)
        {
            for(int j=1;j<=m;j++)
            {
                cout<<p[i][j]<<' ';
            }
            cout<<'\n';
        }
        return 0;
    }
    

    信息

    ID
    128
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    23
    已通过
    11
    上传者