주어진 숫자 k, a, b, c. if 또는 배열이나 루프를 사용하지 않고 a, b, c 중 k 번째로 큰 번호를 찾는 방법. 최소 또는 최대 기능이 제공됩니다.세 개의 숫자 중 n 번째로 큰 숫자 찾기
답변
C++ 조각과 같은 것이 필요합니다. 다른 언어로 보일 수도 있습니다.
auto 1st = max(a,max(b,c));
auto 3rd = min(a,min(b,c));
auto 2nd = a+b+c-1st-3rd;
return (2-k)*(3-k)*1st/2 + (k-1)*(3-k)*2nd + (k-1)*(k-2)*3rd/2;
그것은 3.
이 더 아름다운 2 개 코멘트 결과를 통합, k는 숫자 1, 2 다음 중 하나에 해당한다고 가정한다 : 또한
#define maybe(x) x*(x!=n1&&x!=n3)
auto n1 = max(a,max(b,c));
auto n3 = min(a,min(b,c));
auto n2 = maybe(a)+maybe(b)+maybe(c);
return n1*(k==1) + n2*(k==2) + n3*(k==3);
을, 내 첫번째 버전은 무시 식별자가 숫자로 시작할 수 없다는 사실.
일부 언어에서는 (k == 1) 정수로 사용할 수 없거나 0 또는 1이 될 수 없습니다. 이러한 언어에서 첫 번째 버전이 더 잘 작동 할 수 있습니다.
오버플로 관련 : 이는 유형에 따라 다릅니다.
정수 유형의 경우 a + b + c-n1-n3이 오버플로를 유발할 수 있지만 여전히 정확합니다. 그 이유는 다음과 같습니다. a + b + c-n1-n3의 결과는 더 낮은 비트에서 정확합니다. 예를 들어 32 비트 숫자를 사용하면 a, b 및 c는 32 비트 숫자가되고 결과는 가장 낮은 32 비트에서 정확합니다. 즉, 결과는 정확히 a 또는 be 또는 c가됩니다. 따라서 그것은 정확합니다. float 숫자에 대해 ^가 작동하지 않으며 질문에서 숫자의 유형을 지정하지 않았다는 사실을 감안할 때 ^에서 + 및 -로 돌아갑니다.
정수가 아닌 형식의 경우 오버플로로 인해 반올림 오류가 발생할 수 있습니다. 이를 방지하기 위해 이제 0을 추가 할 때를 제외하고는 + 또는 -를 사용하지 않는 구현을 선택했습니다.
좋은 해결책이지만, 예를 들어'a + b + c '가 오버 플로우 할 수 있다는 점을 명심하십시오. –
'a^b^c^1st^3rd'는 오버플로를 피하지만,'return' 줄에도 오버플로 문제가 있습니다. return 문 뒤에 아이디어를 간략히 설명해 주시겠습니까? "(! (k-1)) * 1st + (! (k-2)) * 2nd + (! (k-3)) * 3rd' –
아니면 이것을 어떻게 얻습니까? – tobeka
- 1. 생성 된 숫자 그룹에서 N 번째로 큰 값 찾기
- 2. C 배열에서 두 번째로 큰 숫자 찾기
- 3. 벡터에서 n 번째로 큰 숫자 생성 R
- 4. n 개의 숫자 모드 찾기
- 5. 평균 n + log n 비교에서 두 번째로 큰 n 개의 숫자 찾기
- 6. 큰 숫자 찾기
- 7. 배열을 사용하는 열 개의 숫자 중 가장 큰 숫자
- 8. 스왑 세 개의 숫자
- 9. 파일에서 상위 n 개의 숫자 찾기
- 10. 파이썬에서 n 개의 숫자 평균 찾기
- 11. 목록에서 n 개의 숫자 평균 찾기
- 12. 배열의 n 번째로 작은 숫자 위치 얻기
- 13. 소수의 n 번째 숫자 찾기
- 14. 컬렉션에서 더 큰 숫자 찾기
- 15. SUM은 두 번째와 세 번째로 큰 숫자 이전 5 개 개의 번호
- 16. 다음 큰 숫자 동일한 숫자
- 17. 최소 세 자리 숫자 중 가장 큰 숫자로 정렬
- 18. 최소 세 숫자
- 19. M보다 큰 첫 번째 숫자 찾기 M
- 20. 범위 내에서 더 큰 숫자 찾기
- 21. 집합에없는 숫자 찾기
- 22. 셀 배열에서 상위 n 개의 숫자 셀 찾기
- 23. n 개의 플롯에서 n 개의 숫자 변수에 대해 하나의 숫자 변수를 플롯
- 24. mongodb : 열의 가장 큰 숫자 찾기
- 25. 합성 숫자 찾기
- 26. 배열이나 루프를 사용하지 않고 5 개의 주어진 숫자 중 세 번째로 큰 숫자를 찾는 가장 빠른 방법은 무엇입니까?
- 27. 세 개의 숫자 뒤에 공백 추가
- 28. 가장 높은 숫자 n 찾으십시오.
- 29. 숫자 찾기 정규식 문제
- 30. 부호없는 산술 중 ULONG_MAX보다 큰 숫자
왜 if 또는 배열이나 루프를 사용할 수 없습니까? 컨텍스트가 도움이 될 것입니다. –
이것은 아마도 인터뷰 (또는 숙제)의 퍼즐 일 가능성이 높습니다. – Jarlax