๋ฌธ์
N!์์ ๋ค์์๋ถํฐ ์ฒ์ 0์ด ์๋ ์ซ์๊ฐ ๋์ฌ ๋๊น์ง 0์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. (0 ≤ N ≤ 500)
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๊ตฌํ 0์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์๊ฐ ์ ํ | ๋ฉ๋ชจ๋ฆฌ ์ ํ | ์ ์ถ | ์ ๋ต | ๋งํ ์ฌ๋ | ์ ๋ต ๋น์จ |
---|---|---|---|---|---|
2 ์ด | 128 MB | 70550 | 33569 | 28012 | 47.323% |
https://www.acmicpc.net/problem/1676
ํ์ด
์๊ณ ๋ฆฌ์ฆ
์ด๋ฌธ์ ๋ ์
๋ ฅ๊ฐ์ ์ ์ดํด์ผํ๋ค. (0 ≤ N ≤ 500)
์ ๋ฒ์๋ก 500! ์ด๋ผ๋ฉด ์๋์ ๊ฐ์ ๊ฐ์ด ๋์จ๋ค.
1220136825991110068701238785423046926253574342803192842192413588385845373153881997605496447502203281863013616477148203584163378722078177200480785205159329285477907571939330603772960859086270429174547882424912726344305670173270769461062802310452644218878789465754777149863494367781037644274033827365397471386477878495438489595537537990423241061271326984327745715546309977202781014561081188373709531016356324432987029563896628911658974769572087926928871281780070265174507768410719624390394322536422605234945850129918571501248706961568141625359056693423813008856249246891564126775654481886506593847951775360894005745238940335798476363944905313062323749066445048824665075946735862074637925184200459369692981022263971952597190945217823331756934581508552332820762820023402626907898342451712006207714640979456116127629145951237229913340169552363850942885592018727433795173014586357570828355780158735432768888680120399882384702151467605445407663535984174430480128938313896881639487469658817504506926365338175055478128640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
๊ต์ฅํ ํฐ์์ด๊ธฐ๋๋ฌธ์ Long์ ๋ฒ์๋ ๋์ด๊ฐ๊ฒ ๋๊ณ , BigInteger
๋ฅผ ์ฌ์ฉํด์ ๊ตฌํด์ผํ๋ค. ์ด๊ฒ๋ณด๋ค ์ฝ๊ฒ ํ์์๋ ๋ฐฉ๋ฒ์ ์์๋ณด์.
์ผ๋จ ๋ท์๋ฆฌ๊ฐ 0์ด ๋์ค๋ ๊ฒฝ์ฐ๋ ์ธ์ ์ธ์ง ์๊ฐํด๋ณด๋ฉด, 2์ 5๊ฐ ๊ณฑํด์ง๋๋ค. ์ฆ, ์์ธ์๋ถํด๋ฅผ ํด์ 2์ 5๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ ๋ท์๋ฆฌ๋ 0์ผ๋ก ๋๋๋ค.
- 5! - 120 (1)
- 10! - 3628800 (2)
- 15! - 1307674368000 (3)
- 20! - 2432902008176640000 (4)
- 25! - 15511210043330985985984000000 (6)
๊ทธ๋ฆฌ๊ณ ์ ๋ ฅ๊ฐ์ด 25์ผ๋๋ ์นด์ดํธ๊ฐ 2 ์ฆ๊ฐํ๋ค.
๋ท์๋ฆฌ์ 0์ด n๊ฐ ์๋ค๋ ์๋ฏธ๋ 2์ 5๊ฐ n๊ฐ์ฉ ์ง์ง์ด ์กด์ฌํ๋ค๋ ๋ฏ์ด๋ค. ํฉํ ๋ฆฌ์ผ ๊ฐ์์ 2๋ 5๋ณด๋ค ์์์์ฌ์ ์ฐ์๋ ์๋ฅผ ๊ณฑํ๊ฒ ๋๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๋ชจ๋ ๊ฐ๋ค์ ์์ธ์ ๋ถํด๋ค์ 2์ ๊ฐ์๊ฐ 5์ ๊ฐ์๋ณด๋ค ๋ง๋ค.
๋ค์๋งํด 5์ ๊ฐ์์ ๋ฐ๋ผ ๊ฐ์ด ๋ณํํ๋ค. 5์ n์น์ ๋ฐ๋ผ ์นด์ดํธ๊ฐ์ ํ๋ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค. ์ฆ, ๋จ์ํ 5๋ก ๋๋๊ฒ์ด ์๋๋ผ ๋ฐ๋ณต๋ฌธ์ ํตํด 5๋ก ๋๋๋ฉด์ ๋์ ํฉ์ ๊ตฌํด์ค๋ค.
์ด๋ฅผ ์์ฑํ ์ฝ๋๋ ๋๋ฒ์งธ์๋๋ฅผ ์ฐธ๊ณ ํ์.
์ฝ๋
์ฒซ๋ฒ์งธ์๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
public class ํฉํ ๋ฆฌ์ผ0์๊ฐ์ {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
char[] arr = (String.valueOf(factorial(n))).toCharArray();
int count = 0;
for(int i=arr.length-1; i>=0; i--){
if(arr[i] == '0'){
count++;
}else{
System.out.println(count);
break;
}
}
br.close();
}
public static BigInteger factorial(int n){
//biginteger๋ก ์ฌ์ฉํด์ผํ๋ค.
BigInteger result = new BigInteger(String.valueOf(1));
for(int i=2; i<=n; i++){
//๋ฒ์๊ฐ 500๊น์ง ์ด๋ฏ๋ก 500!์ Long์ ๋ฒ์๋ ๋์ด๊ฐ๋ค.
result = result.multiply(BigInteger.valueOf(i));
}
return result;
}
}
๋ฌธ์ ๋ฅผ ์ฒ์ ์ ํ์๋ ์๊ฐ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ๊ฐ๋ค.
- ํฉํ ๋ฆฌ์ผ์ ๋๋ฆฐ ๊ฐ์ ๊ตฌํ๋ค.
- ๋ค์์ ๋ถํฐ 0์ ๊ฐ์๋ฅผ ์ธ์ ์ถ๋ ฅํ๋ค.
ํ์ง๋ง...์คํจ...
๋ฌธ์ ๋ ์์ ์๊ณ ๋ฆฌ์ฆํ๋ฆ์ ์ ์ด๋์๋ฏ 500!๊น์ง์ ๋ฒ์์์ Long
์ ๋์ด๊ฐ๊ฒ ๋๋ค. ๊ทธ๋์ BigInteger
๋ก ์์ฑํ๋ ์ ์์ ์ผ๋ก ์๋ํ์๋ค.
๋๋ฒ์งธ ์๋
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(br.readLine());
int count = 0;
while (num >= 5) {
count += num / 5;
num /= 5;
}
System.out.println(count);
}
}
์ฑ๊ณต!!