𝘚𝘭𝘰𝘸 𝘣𝘢𝘡 𝘴𝘡𝘦𝘒π˜₯𝘺

[λ°±μ€€] 1676번: νŒ©ν† λ¦¬μ–Ό 0의 개수 - C++ λ³Έλ¬Έ

μ½”λ”©ν…ŒμŠ€νŠΈ μ€€λΉ„/λ°±μ€€

[λ°±μ€€] 1676번: νŒ©ν† λ¦¬μ–Ό 0의 개수 - C++

.23 2021. 8. 25. 11:55
문제

N!μ—μ„œ λ’€μ—μ„œλΆ€ν„° 처음 0이 μ•„λ‹Œ μˆ«μžκ°€ λ‚˜μ˜¬ λ•ŒκΉŒμ§€ 0의 개수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

μž…λ ₯

첫째 쀄에 N이 주어진닀. (0 ≤ N ≤ 500)

 

좜λ ₯

첫째 쀄에 κ΅¬ν•œ 0의 개수λ₯Ό 좜λ ₯ν•œλ‹€.


N!을 κ΅¬ν•œ λ‹€μŒ 10으둜 λ‚˜λˆ„μ–΄ κ΅¬ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν’€λ©΄ N에 500을 λŒ€μž…ν•˜μ˜€μ„ λ•Œ 값이 μ•ˆλ‚˜μ˜€λŠ” 것을 확인할 수 μžˆλ‹€.

즉, νŒ©ν† λ¦¬μ–Όμ˜ 값을 κ³„μ‚°ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν’€λ©΄ μ•ˆλœλ‹€λŠ” λœ»μ΄λ‹€.

 

뒀에 0이 λ‚˜μ˜¨λ‹€λŠ” μ˜λ―ΈλŠ” 10의 λ°°μˆ˜λΌλŠ” 뜻이고, 0의 개수λ₯Ό κ΅¬ν•œλ‹€λŠ” 것은 10의 λͺ‡ μ œκ³±μΈμ§€, 곧 νŒ©ν† λ¦¬μ–Όμ΄ κ³„μ‚°λ˜λŠ” λ™μ•ˆ 2와 5κ°€ μ–Όλ§ˆλ‚˜ λ“€μ–΄κ°”λŠ”μ§€λ₯Ό μ˜λ―Έν•œλ‹€.

 

κ³±ν•΄μ£ΌλŠ” μˆ˜μ— 2와 5κ°€ 각각 λͺ‡κ°œ κ³±ν•΄μ§€λŠ”μ§€ μ„Ό ν›„ 더 적은 값이 닡이 λ˜λŠ”λ°, λ²”μœ„ λ‚΄μ—μ„œ 5κ°€ 더 적게 λ“€μ–΄κ°€κΈ° λ•Œλ¬Έμ— 2의 κ²½μš°λŠ” κ³„μ‚°ν•˜μ§€ μ•Šμ•˜λ‹€.

 

μ½”λ“œ
#include <cstdio>

int main(void) {
    int n;
    scanf("%d", &n);

    int count = 0;
    
    for(int i = 5; i <= n; i *= 5) {
        count += n / i;
    }
    printf("%d\n", count);
    return 0;
}
Comments