- ��
- ë‘�명ì�˜ ì„ ìˆ˜ê°€ ìµœì„ ì�„ ë‹¤í• ë•Œ, 누가 해당 경기ì—�서 ì�´ê¸°ëŠ”ì§€ì—� 대한 ë¬¸ì œ
- Dynamic Programming
- ë‚´ 1ë…„ê°„ì�˜ 숙ì›�ì�˜ ë¬¸ì œë¥¼ 풀었다. -김태진
- ë¬¸ì œë¥¼ 단순화하여, 앞으로 홀수번 시행ì�´ 최ì �ì�¸ 경우, 지금 하는 사람ì�´ 승리하게 ë�œë‹¤. ì�´ë¥¼ ì�´ìš©í•˜ì—¬ n-1번째 시행ì—�서(지는 시ì �ì�„ 첫번째로 하여 거꾸로 올ë�¼ê°„다.) n번째로 올 때 모ë‘� 홀수ì�¸ 경우ì—�ë§Œ 해당 시ì �ì�˜ 사람ì�´ 지게ë�˜ëŠ”ë�° (1,3,5번ì—�서 7번으로 ê°ˆ 수 있는ë�° 1,3,5번ì�˜ 시행횟수가 모ë‘� 홀수개) 하나ë�¼ë�„ ì§�수ì—�서 오는 경우가 있으면 ê·¸ 경우가 ìƒ�대방ì�´ 무조건 지는 경우ì�´ë¯€ë¡œ ìµœì„ ì�´ë‹¤.
- 즉, ì§�수번째 시행ìž�ê°€ 무조건 ì§„ë‹¤ê³ ë³¸ë‹¤.(ì �í™”ì‹�)
- n-1번째가 모ë‘� 홀수ì�´ë©´ ìž�ì‹ ì�˜ 차례 n번째는 ì§�수여서 지게ë�œë‹¤.
- n-1번째� 하나�� �수 경우가 있으면 n번째�서 n-1로 만들 때 �수로 만들 수 있으므로 �기게�다.
//
// main.cpp
// gusul
//
// Created by Jereneal Kim on 13. 7. 16..
// Copyright (c) 2013ë…„ __ZeroPage__. All rights reserved.
//
#include <iostream>
int main(int argc, const char * argv[])
{
int arr[501][501]={0};
int k1,k2;
int barr[4];
int tmp;
scanf("%d %d %d",&barr[1],&barr[2],&barr[3]);
for(int i=0;i<=500;i++){
for(int j=0;j<=500;j++){
tmp=0;
for(int k=1;k<=3;k++){
if(i>=barr[k]){
if(arr[i-barr[k]][j]==0&&tmp==0){
tmp = 1;
}
}
}
for(int k=1;k<=3;k++){
if(j>=barr[k]){
if(arr[i][j-barr[k]]==0&&tmp==0){
tmp = 1;
}
}
}
arr[i][j]=tmp;
}
}
for(int T=0;T<5;T++){
scanf("%d %d",&k1,&k2);
if(arr[k1][k2]==1){
printf("A\n");
}else{
printf("B\n");
}
}
return 0;
}