5347번 - LCM
최소공배수는 잘 나오는것같은데
어디가 문제일까요?..
lcm = (unsigned long long)(a*b) / y;
부분에서 이미 (a * b)ㅏ 둘 다 int 타입이라 오버플로우가 난 상태에서
unsigned long long으로 캐스팅하셔서 그렇습니다.
((unsigned long long)a * b) / y 로 바꿔서 제출해보니 맞네요 :)
@Acka
( (unsigned long long) a * b ) / y // 먼저 형변환 하고 a*b하는거면
(unsigned long long) a * b / y // 이것도 가능한가요? y때문에 안되려나
1 524287 524287
답은 524287이 나와야 맞습니다
@joonas 감사합니다. 풀었습니다 ~
(unsigned long long) a * b / y
가능합니다.
((unsigned long long) a ) * b / y 이기 때문에 가능합니다.
비슷한 예로 int a=2 일때 (double)(a/5) 랑 (double)a/5 는 다릅니다
오 축하드려요
@joonas 우선순위가 형변환에도 적용되는줄은 몰랐습니다??!
같은 우선순위 내에서는 가장 큰 타입으로 맞춰지기 때문에 가능할거예요ㅎㅎ
가 아니라 차례대로 계산되는 순서에 맞춰서 계산한 데이터들 중의 가장 큰 타입이네요.
a * b / (long long)y 이런건 안되는군요. 덕분에 하나 알아갑니다ㅎㅎ
댓글을 작성하려면 로그인해야 합니다.
busyhuman 8년 전
최소공배수는 잘 나오는것같은데
어디가 문제일까요?..