螺旋输出 数字;
#include<bits/stdc++.h>
using namespace std;
int a[1001][1001]={0};
int main(){
int n,j,l,k,i,x,y,x1=0,y1=0,e=100,b=0,c=100,d=0;
cin>>n;
for(j=1;j<=n/2;j++){
for(k=1;k<=j;k++){
if(j*k>=n){
x1=j;
y1=k;
break;
}
}
if(x1*y1>=n) break;
}
x=x1/2; y=y1/2;
a[x][y]=1;
x=x-1; y=y-1; l=1; // cout<<x<<" "<<y<<endl;
for(j=1;j<n;j+=2){
for(i=0;i<=j;i++){
a[x][++y]=++l;
if(e>x) e=x;
if(b<x) b=x;
if(c>y) c=y;
if(d<y) d=y;
if(l==n) break;
}
if(l==n) break;
for(i=0;i<=j;i++){
a[++x][y]=++l;
if(e>x) e=x;
if(b<x) b=x;
if(c>y) c=y;
if(d<y) d=y;
if(l==n) break;
}
if(l==n) break;
for(i=0;i<=j;i++){
a[x][--y]=++l;
if(e>x) e=x;
if(b<x) b=x;
if(c>y) c=y;
if(d<y) d=y;
if(l==n) break;
}
if(l==n) break;
for(i=0;i<=j;i++){
a[--x][y]=++l;
if(e>x) e=x;
if(b<x) b=x;
if(c>y) c=y;
if(d<y) d=y;
if(l==n) break;
}
x--;y--;
if(l==n) break;
}
for(j=e;j<=b;j++){
for(k=c;k<=d;k++){
printf("%5d",a[j][k]);
}
cout<<endl;
}
return 0;
}
82 83 84 85 86 87 88 89 90 91
81 50 51 52 53 54 55 56 57 92
80 49 26 27 28 29 30 31 58 93
79 48 25 10 11 12 13 32 59 94
78 47 24 9 2 3 14 33 60 95
77 46 23 8 1 4 15 34 61 96
76 45 22 7 6 5 16 35 62 97
75 44 21 20 19 18 17 36 63 98
74 43 42 41 40 39 38 37 64 99
73 72 71 70 69 68 67 66 65 100