[블루 브리지 컵 연습] A조 코드 빈칸 채우기 문제 13-18 -------업데이트 중

[13년 A조]


4. 제목: 접두사 판단
다음 코드 판단needlestart가 가리키는 문자열이haystack 인지 여부start가 가리키는 열의 접두사입니다. 그렇지 않으면 NULL로 돌아갑니다.
예를 들어 "abcd1234"는 "abc"를 접두사로 포함하고 있다

//       
#include
using namespace std;

char* prefix(char* haystack_start, char* needle_start)
{
	char* haystack = haystack_start;      //  
	char* needle = needle_start;          //  

	
	while(*haystack && *needle){//         
        //if(------------------------) return NULL;
		if(*(haystack++)!=*(needle++)) return NULL;        //    
	}
//    ,   	
	if(*needle) return NULL;
	
	return haystack_start;
}

int main(){
	cout<

 

6. :

    , , , 。

    :3 + 5 * (2 + 6) - 1

    , 。

    , ( ) , :

    - + 3 * 5 + 2 6 1

    , 。

    , :

    1. + - *
    2. 10
    
    。
    : , 。


#include 
using namespace std;

struct EV
{
	int result;  //     
	int n;       //        
};

struct EV evaluate(char* x)
{
	struct EV ev = {0,0};
	struct EV v1;
	struct EV v2;

	if(*x==0) return ev;
	
	if(x[0]>='0' && x[0]<='9'){
		ev.result = x[0]-'0';    //      ,'1'-'0'=1 
		ev.n = 1;
		return ev;
	}
	//- + 3 * 5 + 2 6 1
	v1 = evaluate(x+1);
	//v2 = _____________________________;  //    
	v2 = evaluate(x+1+v1.n);  //    
	
	if(x[0]=='+') ev.result = v1.result + v2.result;
	if(x[0]=='*') ev.result = v1.result * v2.result;
	if(x[0]=='-') ev.result = v1.result - v2.result;
	ev.n = 1+v1.n+v2.n;

	return ev;
}

int main(){
	string s="-+3*5+261";
	const EV &ev = evaluate((char*)(s.c_str()));
	cout<

[14년 A조]

4. :

    : , 。 , !

    :1 。

    , 7 , 。

    ,1/7 :0.142857..., 142857..., 1

    ,2/7, 3/7, ... 6/7 , n/7, n

    7 。

    7 : 2, 2 5, 。

    7 :
     142857... 1,
     285714... 2,
     428571... 3,
     571428... 4,
     714285... 5,
     857142... 6

    , 。


#include 
#include 
//     
int ge_wei(int a)
{
	if(a % 2 == 0)
		return (a * 2) % 10;
	else
		return (a * 2 + 5) % 10;	
}

//     
int jin_wei(char* p)
{
	char* level[] = {
		"142857",
		"285714",
		"428571",
		"571428",
		"714285",
		"857142"
	};
	
	char buf[7];
	buf[6] = '\0';
	strncpy(buf,p,6);
	
	int i;
	for(i=5; i>=0; i--){
		int r = strcmp(level[i], buf);
		if(r<0) return i+1;
		while(r==0){
			p += 6;
			strncpy(buf,p,6);
			r = strcmp(level[i], buf);
			if(r<0) return i+1;
			//______________________________;  //  
			if(r>0) return i;			 
		}
	}
	
	return 0;
}

//     7
void f(char* s) 
{
	int head = jin_wei(s);
	if(head > 0) printf("%d", head);
	
	char* p = s;
	while(*p){
		int a = (*p-'0');
		int x = (ge_wei(a) + jin_wei(p+1)) % 10;
		printf("%d",x);
		p++;
	}
	
	printf("
"); } int main() { f("428571428571"); f("34553834937543"); return 0; }

5.  :

    n ( ), ? 。

    【1.png】 ,8 , , 。 ... 。

    , 。

    ( )。

    ( , , )。 , 。   
   
    , -1

[15년 A조]

4.

StringInGrid 。
、 。
, 。
, 。

, 。


//%*s   *     

#include 
#include 

void StringInGrid(int width, int height, const char* s)
{
	int i,k;
	char buf[1000];
	strcpy(buf, s);
	if(strlen(s)>width-2) buf[width-2]=0;
	
	printf("+");
	for(i=0;i

5. 

1,2,3...9 , 1/3, ?

, 。


#include 

void test(int x[])
{
	int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3];
	int b = x[4]*10000 + x[5]*1000 + x[6]*100 + x[7]*10 + x[8];
	
	if(a*3==b) printf("%d / %d
", a, b); } void f(int x[], int k) { int i,t; if(k>=9){ // ,k=9 test(x); return; } for(i=k; i<9; i++){ // {t=x[k]; x[k]=x[i]; x[i]=t;} f(x,k+1); //_____________________________________________ // {t=x[k]; x[k]=x[i]; x[i]=t;} // , } } int main() { int x[] = {1,2,3,4,5,6,7,8,9}; f(x,0); return 0; }

[16년 A조]

4. 。

: “ ”,

: , 。

, 。

, 。


#include 

void swap(int a[], int i, int j)
{
	int t = a[i];
	a[i] = a[j];
	a[j] = t;
}

int partition(int a[], int p, int r)
{
    int i = p;
    int j = r + 1;
    int x = a[p];
    while(1){
        while(ix);
        if(i>=j) break;
        swap(a,i,j);
    }
	//______________________;     
	swap(a,p,j); 
    return j;
}

void quicksort(int a[], int p, int r)
{
    if(p

 5.

1 0
0, 。

, :
00000000000000000000000001100111   00000000000000000000000001100000
00000000000000000000000000001100   00000000000000000000000000001100

, 。


#include 

void f(int x)
{
	int i;
	for(i=0; i<32; i++) printf("%d", (x>>(31-i))&1);
	printf("   ");
	
	//x = _______________________;     
	x = x&(x+1);
	
	for(i=0; i<32; i++) printf("%d", (x>>(31-i))&1);
	printf("
"); } int main() { f(103); f(12); return 0; }

[17년 A조]

5. :

A,B,C 3 。
:"A","AB","ABC","ABA","AACBB" ....

, :
, ?

, ,
, 。

, 。


#include 

// a A,b B,c C   ,            n  。
int f(int a, int b, int c, int n)
{
	if(a<0 || b<0 || c<0) return 0;
	if(n==0) return 1; 
	
	//return ______________________________________ ;  //   
	return f(a-1,b,c,n-1)+f(a,b-1,c,n-1)+f(a,b,c-1,n-1);
}

int main()
{
	printf("%d
", f(1,1,1,2)); printf("%d
", f(1,2,3,3)); return 0; }

6.  :


:"abcdkkk" "baabcdadabc",
"abcd", 4。

, 。

, 。


//     
#include 
#include 
#include 
using namespace std; 
#define N 256
int f(const char* s1, const char* s2)
{
	int a[N][N];
	int len1 = strlen(s1);
	int len2 = strlen(s2);
	int i,j;
	
	memset(a,0,sizeof(int)*N*N);
	int max = 0;          //         
	for(i=1; i<=len1; i++){
		for(j=1; j<=len2; j++){
			if(s1[i-1]==s2[j-1]) {
				//a[i][j] = __________________________;  //  
				a[i][j] = a[i-1][j-1]+1 ;
				if(a[i][j] > max) max = a[i][j];
			}
		}
	}
	
	return max;
}

int main()
{
	printf("%d
", f("abcdkkk", "baabcdadabc")); return 0; }

 

[18년 A조]

5. :

( )。

n=1,2,3 , :
, 。

 



#include 
#include 

void show(char* buf, int w){
	int i,j;
	for(i=0; i

 

좋은 웹페이지 즐겨찾기