九度[1104]-整除问题

来源:互联网 发布:han眼镜 知乎 编辑:程序博客网 时间:2024/06/05 20:21

九度[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;}