[블루 브리지 컵 연습] 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Blu-Bridge 컵 -- Excel 주소
문제 설명
Excel 셀의 주소는 열 번호를 알파벳으로 표시하는 흥미로운 것을 나타낸다.
예를 들면,
A는 첫 번째 열을 나타냅니다.
B는 두 번째 열을 나타냅니다.
Z는 26열을 나타냅니다.
AA는 27열을 나타냅...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
//
#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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Blu-Bridge 컵 -- Excel 주소문제 설명 Excel 셀의 주소는 열 번호를 알파벳으로 표시하는 흥미로운 것을 나타낸다. 예를 들면, A는 첫 번째 열을 나타냅니다. B는 두 번째 열을 나타냅니다. Z는 26열을 나타냅니다. AA는 27열을 나타냅...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.