예를 들면 5같은 경우 비트로 나타내면
0000 0000 0000 0000 0000 0000 0000 0101
인데, 이 때 1의 개수는 2개임.
-1같은 경우는 비트로 나타내면
1111 1111 1111 1111 1111 1111 1111 1111
인데, 이 때 1의 개수는 32개임.
int bit_count(int x)
{
int ret;
//code
return ret;
}
//code에는 어떤 코드가 들어가야 할까요?
사용가능한 연산자: ! ~ & ^ | + << >>
연산자 사용개수 제한: 40개
csapp 볼 때 머리 아파서 넘어간 문제군
ret = __builtin_popcount(x); ㅇㅅㅇ;;
ㄴ 저런함수도이썽?
근데 이거 괄호도 못써? ㅇㅅㅇ
괄호는사용가능하고 if, while, for같은건 사용안됨
아 그리고 정수 literal은 0부터 0xFF 까지만 사용가능 0xFFFFFFFF같은건 사용불가능
ㅋㅋㅋ 빌트인 팝카운트 쓰면 되자너~
ㄴ 다른 함수쓰면 안됨.
https://ideone.com/Bybfmg
FFFF이런건 걍 만들수있으니까 걍씀
아우 못해먹겠군요 8ㅅ8 65개에서 포기합니다
http://rextester.com/VAKR88158
https://ideone.com/nwUbVd
std::bitset<32> bit ( x); ret = bit.count();
https://ideone.com/ct1OiZ
https://ideone.com/Bqe1ZZ
이걸 왜못하지.. 신입생들도 한달배우면 할 정도 수준아님?..
는 if, while, for 사용하면 안되네.. 그럼 생각좀해봐야겟다
그러니까 현존하는 모든 함수 사용금지에 연산자만 사용가능?
재귀쓰면안되나
와 64개는 되는데 40개는 어떻게하는거지 접근방법이 틀렸나
반복문만 써도 금방 푸는데 쓰지 말라고 해서 고민하다가 50줄 이하라고 해서 ㅈㅈ 쳤다 근데
답 보니까 재귀 쓰네 생각 못한 방법이다 한 수 배워간다
60개까진 되는데 그이하로 되는거 있음?