2011-10-28 3 views
-2

예를 들어 나는 파일에서 2 개의 정수를 취하는 C++을 가지고있다. 예를 들어 int a = 2052342와 int b = 2입니다. b가 안에 있는지 검색 할 검색이 필요합니다. 따라서이 예에서 b는 안에 있습니다. 그러나 b가 예를 들어 7 일 경우에는 그렇지 않습니다. 어떤 종류의 기능을 사용해야합니까? 빠른 데모를 제공 할 수 있습니까? 편집 : 아니 숙제가 아니기 때문에 올해는 Programmers Olympiad에서 경쟁 할 것이므로 마지막 Programmers Olympiads에 있던 C++ 연습 문제를 모두 프로그래밍하고 있습니다.정수를 정수로 찾는 명령은 무엇입니까?

+1

그 요구 사항은 너무 인공적이어서 숙제 여야합니다. 사실, 교사가 배운 연습입니까? –

+0

아니 숙제가 아니야, 올해는 Programmers Olympiad에서 경쟁 할 것이므로 마지막 Programmers Olympiads에 있던 C++ 연습 문제를 모두 프로그래밍하고 있습니다. – Y2ok

+0

숫자가 다른 숫자의 "내부"에 어떤 의미가 있는지 정의하십시오. 거기에 "내부"연산자가없는 이유가 있습니다 ... – tenfour

답변

3

"b가 안에있는 경우"에 대한 많은 설명없이 예쁜 조각 예제를 사용합니다. 'int b'의 부분 문자열이 'int a'안에 있는지 확인하고 있습니까? B가 205, 또는 (234), 그 계산 것인가? 아마도

하지 않는 가장 좋은 방법,하지만 충분히 단순 문자열로 각각의 정수를 변환 한 다음 stringB이 stringA의 하위 문자열이 있는지 확인하기 위해 문자열 검사를하는 것입니다.

업데이트 : Infact, 파일을 파싱 할 때 문자열로 읽는 것뿐입니다. 정수 문제로 보지 마세요. 부분 문자열 검사뿐입니다. 또한 구문 분석하면 정수로, d 패딩을 잃어 버리게된다.

당신이 부서 또는 다른 것에 대해 이야기하고 있다면, 그건 나누기로 할 수 있습니다.

+0

안녕하세요, 그렇습니다. 좋아, 문자열로 변환하려고합니다. – Y2ok

+0

당신은 나눗셈 대신에 모듈러스를 의미합니까? –

+0

@Moo, 기본 단위 나 모듈러스보다 더 복잡했을 텐데 무슨 의미인지 정확히 모르겠습니다. 지금 OP가 말하고있는 것에 근거 해, 어? –

3

가장 간단한 대답은 문자열의 숫자를 표현으로 유지하고 std::find을 사용하는 것입니다. 이미 내부 형식의 번호를 가지고 있고, 문자열로 변환하는 것은 너무 비싸 될 경우 a의 낮은 숫자가 b 동일한 경우 a % 10 == b 사실 일 것이고, a /= 10 낮은 숫자를 제거합니다. 따라서 :

while (a != 0 && a % 10 != b) { 
    a /= 10; 
} 
return a != 0; 

트릭을해야합니다.

관련 문제