ll q;
scanf("%lld", &q);
while (!(q&1)) q>>1;
while
(!(q&1)) q>>1;
위와 같은 코드에서 문제가 생깁니다.
while(q%2==0) q/=2;로 수정하면 괜찮습니다.
long long으로 shift 연산을 하면 어떤 일이 일어나는건가요?
저번에도 한번 long long 비트연산때문에 고통받은적이 있었던 것 같은...
1 뒤에 LL을 붙여서 1LL하면 괜찮았던 것 같은데...
@hongjun7 그렇네요.. q>>1에서 =을 빼먹어서 그런거였어요. 감사합니다.
이렇게 안하신거 아닌지 ㄷㄷ
늦었네요
댓글을 작성하려면 로그인해야 합니다.
lsc4719 8년 전
ll q;
scanf("%lld", &q);
while
(!(q&1)) q>>1;
위와 같은 코드에서 문제가 생깁니다.
while(q%2==0) q/=2;로 수정하면 괜찮습니다.
long long으로 shift 연산을 하면 어떤 일이 일어나는건가요?
저번에도 한번 long long 비트연산때문에 고통받은적이 있었던 것 같은...