busyhuman   8년 전

최소공배수는 잘 나오는것같은데

어디가 문제일까요?..

Acka   8년 전

lcm = (unsigned long long)(a*b) / y;

부분에서 이미 (a * b)ㅏ 둘 다 int 타입이라 오버플로우가 난 상태에서

unsigned long long으로 캐스팅하셔서 그렇습니다.


((unsigned long long)a * b) / y 로 바꿔서 제출해보니 맞네요 :)

busyhuman   8년 전

@Acka

( (unsigned long long) a * b ) / y // 먼저 형변환 하고 a*b하는거면

(unsigned long long) a * b / y // 이것도 가능한가요? y때문에 안되려나

joonas   8년 전

1
524287 524287

답은 524287이 나와야 맞습니다

busyhuman   8년 전

@joonas 감사합니다. 풀었습니다 ~

joonas   8년 전

(unsigned long long) a * b / y

가능합니다.

((unsigned long long) a ) * b / y 이기 때문에 가능합니다.

비슷한 예로 int a=2 일때 (double)(a/5) 랑 (double)a/5 는 다릅니다

joonas   8년 전

오 축하드려요

busyhuman   8년 전

@joonas 우선순위가 형변환에도 적용되는줄은 몰랐습니다??!

Acka   8년 전

같은 우선순위 내에서는 가장 큰 타입으로 맞춰지기 때문에 가능할거예요ㅎㅎ

Acka   8년 전

가 아니라 차례대로 계산되는 순서에 맞춰서 계산한 데이터들 중의 가장 큰 타입이네요.

a * b / (long long)y 이런건 안되는군요. 덕분에 하나 알아갑니다ㅎㅎ

댓글을 작성하려면 로그인해야 합니다.