728x90
반응형
질문 : 함수 설계 f (f (n)) == -n
지난 인터뷰에서 내가받은 질문 :
다음과 같이 f
설계하십시오.
f(f(n)) == -n
여기서 n
은 32 비트 부호있는 정수입니다 . 복소수 산술을 사용할 수 없습니다.
전체 숫자 범위에 대해 이러한 함수를 설계 할 수없는 경우 가능한 가장 큰 범위로 설계하십시오.
어떤 아이디어?
답변
어때 :
f(n) = sign(n) - (-1)n * n
Python에서 :
def f(n):
if n == 0: return 0
if n >= 0:
if n % 2 == 1:
return n + 1
else:
return -1 * (n - 1)
else:
if n % 2 == 1:
return n - 1
else:
return -1 * (n + 1)
Python은 정수를 임의 길이 long으로 자동 승격합니다. 다른 언어에서는 가장 큰 양의 정수가 오버플로되므로 해당 정수를 제외한 모든 정수에 대해 작동합니다.
진짜 번호를 작동하게하려면 (-1) N에 n 개의 교체 할 필요가 { ceiling(n) if n>0; floor(n) if n<0 }
.
C #에서 (오버플로 상황을 제외하고 모든 double에 대해 작동 함) :
static double F(double n)
{
if (n == 0) return 0;
if (n < 0)
return ((long)Math.Ceiling(n) % 2 == 0) ? (n + 1) : (-1 * (n - 1));
else
return ((long)Math.Floor(n) % 2 == 0) ? (n - 1) : (-1 * (n + 1));
}
출처 : https://stackoverflow.com/questions/731832/designing-function-ffn-n
728x90
반응형
'개발관련 > other' 카테고리의 다른 글
PowerShell에서 문자열이 null인지 비어 있는지 확인하는 방법 (0) | 2021.10.08 |
---|---|
Grunt, NPM 및 Bower의 차이점 (package.json vs bower.json) (0) | 2021.10.08 |
Bash 셸 스크립트에서 입력 인수가 있는지 확인 (0) | 2021.10.08 |
Node.js "Cannot find module"오류 해결방법 (0) | 2021.10.08 |
JSON API 응답 형식에 대한 모범 사례 (0) | 2021.10.07 |