북우편 2019 사이버안전학업&사이버연구대학 기시 재시험 추억판

33222 단어

북우편 2019 사이버안전학업&사이버연구대학 기시 재시험 추억판

  • Problem_A(치약 문제):
  • 입력:
  • 출력:
  • 추억 코드:
  • Problem_B(윤년문제):
  • 입력:
  • 출력:
  • 추억 코드:
  • Problem_C(체인 테이블 작업):
  • 입력:
  • 출력:
  • 추억 코드:
  • Problem_D(네트워크 연결 prim):
  • 입력:
  • 출력:
  • 추억 코드:
  • 올해 북우의 기시도 자료 휴대 불허 규정을 시행하기 시작했다. 첫해인 만큼 인터넷과 인터넷연구원의 제목이 간단하다는 것을 뚜렷하게 느낄 수 있다.물론 연구진의 추억을 들어보면 컴퓨터원과 소프트웨어공학원이 사용하는 문제는 상당히 어렵다.모두가 시험에 응시할 때 앞당겨 고려해야 한다.

    Problem_A(치약 문제):


    치약 4마리 가격 비교, 가장 싼 치약 반환

    입력:


    첫 번째 줄에 T를 입력하면 데이터의 그룹 수를 표시하고 두 번째 줄에 a b c d를 입력하면 치약 4마리의 가격을 표시한다
    2
    2 3 5 2
    3 8 7 4
    

    출력:

    2
    3
    

    최저 가격으로 돌아가기

    추억 코드:

        #include
        using namespace std;
        int main(){
        	int T;
        	int a,b,c,d;
        	scanf("%d",&T);
        	while(T--){
        		scanf("%d %d %d %d",&a,&b,&c,&d);
        		printf("%d
    "
    ,min(a,b,c,d)); } return 0; }

    Problem_B(윤년문제):


    연간 4로 나뉘고 100으로 나뉘지 못하는 일반 윤년과 400으로 나뉘는 세기 윤년의 연수를 통계하다

    입력:


    첫 번째 줄에 T를 입력하면 데이터의 그룹 수를 표시한 다음에 T그룹 데이터를 입력하고, 그룹마다 x y를 입력하면 시작과 끝의 해를 표시한다. (y)
    2
    2999 3019
    1999 2019
    

    출력:

    4
    5
    

    x에서 y년으로 되돌아오다 ∈[x, y]내 윤년 수량count

    추억 코드:

    #include
    using namespace std;
    
    int main(){
    	int T;
    	int x,y,count;
    	scanf("%d",&T);
    	while(T--){
    		scanf("%d %d",&x,&y);
    		count = 0;
    		for(int i = x; i < y; i++){
    			if ( i % 400 == 0 ) count++;
    			else if ( i%100 != 0 && i%4 == 0 ) count++;
    		}
    		printf("%d
    "
    ,count); } return 0; }

    Problem_C(체인 테이블 작업):


    하나의 출력 값이 1,2,3,4,..., n의 n(01은 노드 값이 x인 노드 2를 제거하고 체인 테이블을 뒤집는다. 체인 테이블의 순서를 조정한다. 3은 체인 테이블 값이 x인 노드가 가리키는 다음 노드의 값을 조회한다.

    입력:


    첫 번째 줄에 T를 입력하고 데이터의 그룹 수를 표시합니다. 각 그룹의 첫 줄에 n(노드 수 표시) m(조작 수 표시)을 입력하고 다음 m 줄에 ope(조작 방식) x(조작 노드 값, 조작 방식이 2일 때 이 값을 입력하지 않습니다)를 입력합니다.
    1
    6 6
    3 6
    1 2
    3 1
    2
    1 5
    3 6
    

    출력:


    출력 작업이 3 조회일 때, 검색된 노드가 가리키는 다음 노드 값, 검색되지 않거나 검색되지 않은 노드가 테이블 끝 (다음 노드가 없음) 이면 'NONE' 을 출력합니다.
    NONE
    3
    4
    

    추억 코드:

    #include
    using namespace std;
    
    typedef struct  DNode {
    	int val=0;
    	DNode * pre;
    	DNode * next;
    	DNode(int x) { val = x; pre = NULL; next = NULL;}
    };
    
    int main(){
    	int T;
    	int i,j,n,m,ope,x;
    	bool isforward;
    	DNode * head = new DNode(0);
    	DNode * temp;
    	scanf("%d",&T);
    	while(T--){
    		isforward = true;
    		head->next = head;
    		head->pre = head;
    		scanf("%d %d",&n,&m);
    		for(i=1;i<=n;i++){//  
    			temp = new DNode(i);
    			temp->next = head;
    			temp->pre = head->pre;
    			head->pre->next = temp;
    			head->pre = temp;
    		}
    		for(i=0;i<m;i++){
    			scanf("%d",&ope);
    			switch(ope){
    			case 1:{
    				scanf("%d",&x);
    				temp = head->next;
    				for(j=1;j<n;j++){
    					if(temp->val==x){
    						temp->pre->next = temp->next;
    						temp->next->pre = temp->pre;						
    						n--;
    						break;
    					}
    					temp = temp->next;
    				}
    				break;
    			}
    			case 2:{
    				if(isforward) isforward = false;
    				else isforward = true;
    				break;
    			}
    			case 3:{
    				scanf("%d",&x);
    				if(n<2){printf("NONE
    "
    );break;} if(isforward){ if(head->pre->val==x){ printf("NONE
    "
    ); break; } temp = head->next; for(j=1;j<n;j++){ if(temp->val==x){ printf("%d
    "
    ,temp->next->val); break; } temp = temp->next; } if(j==n) printf("NONE
    "
    ); }else{ if(head->next->val==x){ printf("NONE
    "
    ); break; } temp = head->pre; for(j=1;j<n;j++){ if(temp->val==x){ printf("%d
    "
    ,temp->pre->val); break; } temp = temp->pre; } if(j==n) printf("NONE
    "
    ); } break; } } } } return 0; }

    Problem_D(네트워크 연결 prim):


    연결이 가능한 컴퓨터 네트워크(연통도)가 있는데 Aij는 i컴퓨터가 j컴퓨터로 연결되는 비용을 나타낸다. 보증:Aii=0,Aij=Aji,Aij<=100;

    입력:


    첫 번째 행에 T(T=1)를 입력하고 각 그룹의 첫 번째 행에 N(0 < N < = 50)을 입력한 다음 n행에 Ai0 - Ai n-1을 입력합니다.
    1
    6
    0 1 4 3 7 3
    1 0 2 5 1 8
    4 2 0 3 9 2
    3 5 3 0 1 4
    7 1 9 1 0 3
    3 8 2 4 3 0
    

    출력:


    이 컴퓨터 네트워크를 연결하는 데 필요한 최소 비용을 되돌려줍니다
    7
    

    추억 코드:

    #include
    using namespace std;
    
    int main(){//prim       ,              
    	int T;
    	int i,j,k,n,result,min,pos;
    	int path[55][55];
    	bool check[55];
    	vector<int> point;
    	scanf("%d",&T);
    	while(T--){
    		scanf("%d",&n);
    		result = 0;
    		memset(path,0,sizeof(path));
    		point.clear();
    		for(int i = 0; i < n; i++){
    			for(int j = 0; j < n; j++){
    				scanf("%d",&path[i][j]);
    			}
    			check[i] = false;
    		}
    		if( n < 2 ){
    			printf("0
    "
    ); continue; } check[0] = true; point.push_back(0); for(i=1;i<n;i++){// N-1 , min = 124;// for(j=0;j<point.size();j++){ for(k=0; k<n; k++){ if ( !check[k] && path[point[j]][k]<min ){ min = path[point[j]][k]; pos = k; } } } result += min; point.push_back(pos); check[pos] = true; } printf("%d
    "
    ,result); } return 0; }

    좋은 웹페이지 즐겨찾기