Taro는 Hanako에게 트릭을 보여줍니다.
타로: 안녕, 하나코. 마법을 보여드리겠습니다.
16보다 작거나 같은 양의 정수를 상상해보십시오.
하나코: 알겠습니다.
나는 그것을 상상한다.
Taro: (Taro는 Hanako에게 첫 번째 카드를 보여줍니다.
) 이 카드에 번호가 있습니까?
하나코: 네.
Taro: (Taro는 Hanako에게 2번 카드를 보여줍니다.
) 이 카드에 당신의 번호가 있습니까?
하나코: 없습니다.
Taro: (Taro는 Hanako에게 숫자 3이 있는 카드를 보여줍니다.
) 이 카드에 당신의 번호가 있습니까?
하나코: 네.
Taro: (Taro는 Hanako에게 숫자 4가 적힌 카드를 보여줍니다.
) 이 카드에 당신의 번호가 있습니까?
하나코: 네.
타로: 당신의 숫자는 5입니다!당신의 임무는 이 속임수를 모방하는 프로그램을 작성하는 것입니다.
Hanako의 답변이 답변으로 제공됩니다.
i번째 질문에 대한 답변이 “예”이면 i번째 문자는 “Y”이고 i번째 질문에 대한 답변이 “아니오”이면 i번째 문자는 “N”입니다.
Hanako가 상상한 정수를 반환합니다.
정의
수업:
넘버 매직 이지
방법:
숫자
매개변수:
끈
상품을 반환:
정수
메소드 서명:
int theNumber(문자열 답변)
(당신의 방법이 공개되어 있는지 확인하십시오)
예
0)
“예”
반환: 5
진술의 예.
하나)
“YNN”
반환: 8
8은 다른 카드가 아닌 첫 번째 카드에 있는 유일한 숫자입니다.
2)
“NNNN”
반환: 16
삼)
“매년”
반환: 1
4)
“니니”
반환: 11
검색 질문입니다.
#include <string>
using namespace std;
class NumberMagicEasy{
public:
char checkInCard(int card(), int num){
for(int i=0; i<8; i++){
if(num == card(i)){
return 'Y';
}
}
return 'N';
}
먼저 checkInCard 함수는 해당 번호가 카드에 있는지 확인합니다.
특정 번호 num이 특정 카드의 8개 숫자 중 하나이면 Y를 반환하고 그렇지 않으면 N을 반환합니다.
int theNumber(string answer){
int card1() = {1, 2, 3, 4, 5, 6, 7, 8};
int card2() = {1, 2, 3, 4, 9, 10, 11, 12};
int card3() = {1, 2, 5, 6, 9, 10, 13, 14};
int card4() = {1, 3, 5, 7, 9, 11, 13, 15};
string temp;
for(int i=1; i<=16; i++){
if(checkInCard(card1, i)==answer(0) &&checkInCard(card2, i)==answer(1) &&checkInCard(card3, i)==answer(2) &&checkInCard(card4, i)==answer(3)){
return i;
}
}
return 0;
}
16개의 숫자를 모두 반복할 때 Hanako의 답변과 일치하는 숫자가 있으면 반환됩니다.