ํฉํ ๋ฆฌ์ผ 0์ ๊ฐ์ (silver 4)
N!์์ ๋ค์์๋ถํฐ ์ฒ์ 0์ด ์๋ ์ซ์๊ฐ ๋์ฌ ๋๊น์ง 0์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. (0 ≤ N ≤ 500)
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๊ตฌํ 0์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
10
์์ ์ถ๋ ฅ 1
2

์ ๋ ฅํ ์๋ฅผ ๋ค์ง์ด์ ๋ค์์๋ถํฐ 0์ ๊ฐ์๋ฅผ ์ธ๋ฉด ์ด๋จ๊น..๋ผ๋ ์๊ฐ์ ์ฒ์์ ํ์๋๋ฐ C์ธ์ด๋ก๋ ํ์ด์ฌ๋ณด๋ค ์ด๋ฅผ ๊ตฌํํ๊ธฐ๊ฐ ์ฝ์ง ์์ ๊ฒ ๊ฐ์์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์๊ฐํด๋ดค๋ค.
0์ ๊ฒฐ๊ตญ 10์ ๋ฐฐ์ ์ฆ, 2์ 5์ ๊ณฑ์ ํตํด ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ด์ฉํ๋ค.
10 ํฉํ ๋ฆฌ์ผ์ ์์๋ก ๋ค์ด๋ณด์.
N! = 1 x 2 x 3 x ... x N
ex) 10! = 3628800
10! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10
10! = 1 x 2 x 3 x (2 x 2) x 5 x (2 x 3) x 7 x (2 x 2 x 2) x (3 x 3) x (2 x 5)
10! = 2^8 x 3^4 x 5^2 x 7
10! = (2^2 x 5^2) x 2^6 x 3^4 x 7
10! = 10^2 x 2^6 x 3^4 x 7
์ด๋ฅผ ํตํด ์ ์ ์๋ ๊ฑด 2์ 5์ ๊ฐ์ ์ค ์์ ๊ฒ์ด ๊ณง 0์ ๊ฐ์๋ผ๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์๋ค.
#include <stdio.h>
int main() {
int num;
int two = 0, five = 0;
scanf("%d", &num);
for (int i = 2; i <= num; i *= 2){
two += num / i;
}
for (int j = 5; j <= num; j *= 5){
five += num / j;
}
printf("%d\n", (two < five)? two : five);
return 0;
}
์ค๋ช )
num์ ์ ์ํ ๋ณ์๋ก ์ ์ธํ๊ณ , num์ ์์ธ์๋ถํด ํ์ ๋ ๋์ค๋ 2์ ๋ฐฐ์์ ๊ฐ์๋ฅผ two๋ผ๊ณ ํ๊ณ , num์ ์์ธ์๋ถํด ํ์ ๋ ๋์ค๋ 5์ ๋ฐฐ์์ ๊ฐ์๋ฅผ five๋ผ๊ณ ํด์ฃผ์๋ค.
for๋ฌธ์ ํตํด two์ num์ 2์ ๋ฐฐ์ i๋ก ๋๋ ์ค ๋ชซ์ ๋ํด์ฃผ์๊ณ , ๋ง์ฐฌ๊ฐ์ง๋ก five์๋ num์ 5์ ๋ฐฐ์ j๋ก ๋๋ ์ค ๋ชซ์ ๋ํด์ฃผ์๋ค.
๋ง์ง๋ง์ผ๋ก ์ผํญ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ two์ five ์ค์ ์์ ๊ฐ์ ์ถ๋ ฅํ๋๋ก ํด์ฃผ์๋ค.

์ฐธ๊ณ : https://ksj14.tistory.com/entry/BackJoon1676-ํฉํ ๋ฆฌ์ผ-0์-๊ฐ์
'๋ฐฑ์ค > C' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [C] ๋ฐฑ์ค 10828๋ฒ (0) | 2022.11.11 |
|---|---|
| [C] ๋ฐฑ์ค 1065๋ฒ (0) | 2022.11.11 |
| [C] ๋ฐฑ์ค 2164๋ฒ (0) | 2022.05.24 |
| [C] ๋ฐฑ์ค_ 7568๋ฒ (0) | 2022.05.16 |
| [C] ๋ฐฑ์ค_1929๋ฒ (0) | 2022.05.15 |