[C/C++] 백준 #1676 팩토리얼 0의 개수(수학)
이번 문제는 팩토리얼을 계산했을 때, 뒤에서부터 연속된 0의 개수를 세는 것입니다. 팩토리얼은 1부터 n까지의 곱을 계산한 것인데요. 20 팩토리얼만 해도 2,432,902,008,176,640,000 값이 나와서 정수 계산으로는 힘듭니다. 물론 64비트 정수형을 사용하면 조금 더 계산할 수는 있습니다. 그런데 문제는 500까지의 숫자 범위를 가지고 있습니다. 500 팩토리얼은 \( 1.2 \times 10^{1134} \) 의 숫자로 굉장히 큰 숫자가 나오며, 파이썬이나 C#과 같이 기본적으로 Big Integer가 제공되는 언어가 아니라면, 실제 팩토리얼을 계산하기 힘듭니다. n 팩토리얼 계산은 \(O(n)\) 알고리즘이라고 할 수 있지만, Big Integer 곱셈이 기본 연산이 아닌 관계로 더 오..
2022. 9. 28.
[C/C++] 백준 #1669 멍멍이 쓰다듬기(수학)
멍멍이 쓰다듬기 문제는 1부터 n까지의 합을 계산하는 것을 응용합니다. 첫째날과 마지막날은 1cm가 되어야 하고, 매일 조절할 수 있는 양이 1cm이므로, 10cm를 늘려야 한다면, 1cm, 2cm, 3cm, 2cm, 1cm, 1cm 형태가 되어야 합니다. 늘려야 하는 양이 y cm라고 했을 때, x는 최대값이 됩니다. 즉, 10cm를 늘려야 한다면, 1cm, 2cm, 2cm, 1cm 형태로 늘리는 형태입니다. 그러면 총 6cm 길이가 되고, 남은 길이는 4cm가 됩니다. 그러면 x+1만큼을 제하면, 1cm가 남습니다. 그러면 그 값은 이제까지 나왔던 값 중에 반드시 하나가 됩니다. 일단 다음과 같은 식을 이용해서 우리는 x값을 구합니다. \[ x^2 + x \le y \] \[ x \le \frac{-..
2022. 9. 25.