1 条题解

  • 0
    @ 2022-6-24 4:48:36

    Pascal :

    
    Program matrix;
    var
    n,i,j,tn,s,m,k:longint;
    procedure print(x,y:longint); //顺时针模拟所在层
    begin
       if x=1 then begin writeln(s+y-1); exit end; 
       s:=s+tn-1;
       if y=tn then begin writeln(s+x-1); exit end; 
       s:=s+tn-1;
       if x=tn then begin writeln(s+tn-y); exit end;
       s:=s+tn-1;
       writeln(s+tn-x)
    end;
    function min(x,y:longint):longint;
    begin
    if x<=y then exit(x) else exit(y)
    end;
    Begin
    
    readln(n,i,j);
    m:=min(i,min(j,min(n-i+1,n-j+1))); //判断层数
    i:=i-m+1; j:=j-m+1; //在去掉外层后的矩阵中的坐标
    tn:=n;  
    s:=1;
    for k:=1 to m-1 do begin //去掉外层,s表示新的起点数字
       inc(s,4*tn-4); 
       dec(tn,2)
    end;
    print(i,j);
    
    End.
    
    • 1

    信息

    ID
    134
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者