페르마 수 는 정수 x와 함께 2 2 x +1 로 표현 될 수있는 양의 정수입니다 .
이제 "Fermat-ness"라는 숫자의 속성을 정의하겠습니다.
- 수의 Fermat-ness는 기본에서 시작하여 2의 power of chain의 길이보다 1이 적으며 fermat-ness를 최대화하기 위해 2의 power를 확장합니다.
- Fermat 숫자가 아닌 숫자는 Fermat-ness가 0입니다.
따라서, 17 (2 = 2 2 2 0 +1하는) 세 페르마 네스있다.
도전
0이 아닌 양의 정수를 입력으로 받으면 숫자의 Fermat-ness를 출력합니다.
규칙
- 이진수, 십진수, 16 진수, 큰 숫자로 입력하거나 골프를 가장 잘하는 형식으로 입력 할 수 있습니다.
- 솔루션은 사용하는 표현이 64보다 큰 비트 길이의 숫자를 처리 할 수 있어야합니다.
- 음이 아닌 정수만 사용합니다.
- 표준 허점 은 물론 금지되어 있습니다.
- 입니다 코드 골프 , 그래서 짧은 대답 승리.
테스트 사례
이것들은 형식 input->output
입니다. 공간을 절약하기 위해 입력은 16 진수입니다.
10000000000000000000000000000000000000000000000000000000000000001 -> 2
1000000000000BC00000000000000000000000000000000001000000000000001 ->0
1234567890ABCDEF -> 0
100000000000000000000000000000001 -> 1
5 -> 2
11 -> 3
10001 -> 4
101 -> 1
십진법에서 동일 :
115792089237316195423570985008687907853269984665640564039457584007913129639937 -> 2
115792089237316497527923305698859709742143344804209838213621568094470773145601 -> 0
1311768467294899695 -> 0
340282366920938463463374607431768211457 -> 1
5 ->2
17 -> 3
65537 -> 4
257 -> 1
샌드 박스에서 귀중한 입력을위한 geokavel 덕분 입니다.
1
1111을 입력하면 이진수, 십진수 또는 16 진수인지 어떻게 알 수 있습니까 ???
—
J42161217
@Jenny_mathy 나는 응답자가 원하는 형식의 입력을 결정하기 위해 의미했습니다.
—
HAEM
@ Mr.Xcoder 샌드 박스에서 실제로 64 비트 이하의 Fermat 수가 많지 않은 것으로 나타났습니다. 나는 그 질문이 본질적으로 bignum에 관한 것이라고 주장하고 있으므로 bignum 처리를 요구할 수 있습니다.
—
HAEM
@ HeikkiMäenpää 다른 사람들이 무엇을 추천 할지라도 도전은 당신의 것이며, 당신이 원하는 것을 만들 수 있다는 것을 기억하십시오.
—
isaacg
너무 이른 것 같아요. 보통 1-2 주 정도 기다립니다. 어떤 사람들은 결코 받아들이지 말라고 말합니다!
—
geokavel