#29991: 史上第 一個超過三百行的本題C++解


99980001 (107-07張讓宸)

學校 : 臺北市私立延平高級中學
編號 : 128504
來源 : [203.72.178.2]
最後登入時間 :
2024-05-01 15:29:39
c292. APCS2017-0304-3數字龍捲風 -- 2017年3月APCS | From: [203.72.178.2] | 發表日期 : 2022-04-19 15:33

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
	int n,x;
	while(cin>>n){
		cin>>x;
		int a[n][n]={0};
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				cin>>a[i][j];
			}
		}
		int t=1,cx=0,cy=0,b=0;
		cout<<a[(n-1)/2][(n-1)/2];
		if(x==0){
			cx=(n-1)/2;
			cy=(n-1)/2;
			while(true){
				if(t==n-1){
					if(b%2==0){
						for(int i=0;i<t;i++){
							cy-=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cx-=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cy+=1;
						    cout<<a[cx][cy];
						}
						
						t++;
						b++;
					}
					else {
						for(int i=0;i<t;i++){
							cy+=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cx+=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cy-=1;
						    cout<<a[cx][cy];
						}
						
						t++;
						b++;
					}
					cout<<endl;
					break;
				}
				else {
					if(b%2==0){
						for(int i=0;i<t;i++){
							cy-=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cx-=1;
						    cout<<a[cx][cy];
						}
						t++;
						b++;
					}
					else {
						for(int i=0;i<t;i++){
							cy+=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cx+=1;
						    cout<<a[cx][cy];
						}
						t++;
						b++;
					}
				}
			}
		} 
		else if(x==1){
			cx=(n-1)/2;
			cy=(n-1)/2;
			
			while(true){
				if(t==n-1){
					if(b%2!=0){
						for(int i=0;i<t;i++){
							cx+=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cy-=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cx-=1;
						    cout<<a[cx][cy];
						}
						
						t++;
						b++;
					}
					else {
						for(int i=0;i<t;i++){
							cx-=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cy+=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cx+=1;
						    cout<<a[cx][cy];
						}
						
						t++;
						b++;
					}
					cout<<endl;
					break;
				}
				else {
					if(b%2==0){
						for(int i=0;i<t;i++){
							cx-=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cy+=1;
						    cout<<a[cx][cy];
						}
						t++;
						b++;
					}
					else {
						for(int i=0;i<t;i++){
							cx+=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cy-=1;
						    cout<<a[cx][cy];
						}
						t++;
						b++;
					}
				}
			}
		}
		else if(x==2){
			
			cx=(n-1)/2;
			cy=(n-1)/2;
			while(true){
				if(t==n-1){
					if(b%2!=0){
						for(int i=0;i<t;i++){
							cy-=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cx-=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cy+=1;
						    cout<<a[cx][cy];
						}
						
						t++;
						b++;
					}
					else {
						for(int i=0;i<t;i++){
							cy+=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cx+=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cy-=1;
						    cout<<a[cx][cy];
						}
						
						t++;
						b++;
					}
					cout<<endl;
					break;
				}
				else {
					if(b%2==0){
						for(int i=0;i<t;i++){
							cy+=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cx+=1;
						    cout<<a[cx][cy];
						}
						t++;
						b++;
					}
					else {
						for(int i=0;i<t;i++){
							cy-=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cx-=1;
						    cout<<a[cx][cy];
						}
						t++;
						b++;
					}
				}
			}
		}
		else if(x==3){
			
			cx=(n-1)/2;
			cy=(n-1)/2;
			while(true){
				if(t==n-1){
					if(b%2!=0){
						for(int i=0;i<t;i++){
							cx-=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cy+=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cx+=1;
						    cout<<a[cx][cy];
						}
						
						t++;
						b++;
					}
					else {
						for(int i=0;i<t;i++){
							cx+=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cy-=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cx-=1;
						    cout<<a[cx][cy];
						}
						
						t++;
						b++;
					}
					cout<<endl;
					break;
				}
				else {
					if(b%2==0){
						for(int i=0;i<t;i++){
							cx+=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cy-=1;
						    cout<<a[cx][cy];
						}
						t++;
						b++;
					}
					else {
						for(int i=0;i<t;i++){
							cx-=1;
						    cout<<a[cx][cy];
						}
						for(int i=0;i<t;i++){
							cy+=1;
						    cout<<a[cx][cy];
						}
						t++;
						b++;
					}
				}
			}
		}
	}
}
//0代表左 、1代表上 、2代表右 、3代表下
 
ZeroJudge Forum