SOL) 5의 개수, 2의 개수를 계산한 후 둘중 작은 값을 출력한다.
[-] Collapse
#include<stdio.h>
#define min(a,b) a < b ? a : b
int cal(int f, int n){
int divV = f, ret = 0;
while (n >= divV){
ret += n / divV;
if (n / f < divV) break;
divV *= f;
}
return ret;
}
int main(){
int n, m; scanf("%d%d", &n, &m);
printf("%d", min(cal(2, n) - cal(2, n - m) - cal(2, m), cal(5, n) - cal(5, n - m) - cal(5, m)));
}
#define min(a,b) a < b ? a : b
int cal(int f, int n){
int divV = f, ret = 0;
while (n >= divV){
ret += n / divV;
if (n / f < divV) break;
divV *= f;
}
return ret;
}
int main(){
int n, m; scanf("%d%d", &n, &m);
printf("%d", min(cal(2, n) - cal(2, n - m) - cal(2, m), cal(5, n) - cal(5, n - m) - cal(5, m)));
}
댓글 없음:
댓글 쓰기