九度[1104]-整除问题
题目描述:
给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。
输入
两个整数n(2<=n<=1000),a(2<=a<=1000)
输出
一个整数.
样例输入
6 10
样例输出
1
解题思路:
可将一个数字写成(a*x+y),其中只有y有保存的必要
AC代码:
#include <cstdio>
int n, a;
int main(){
while(scanf("%d%d", &n, &a) != EOF){
long long res = 1;
int ans = 0;
for(int i = 2; i <= n; i++){
res *= i;
while(res % a == 0){
res /= a;
ans++;
}
res %= a;
}
printf("%d\n", ans);
}
return 0;
}