-
题目描述:
-
给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。
-
输入:
-
两个整数n(2<=n<=1000),a(2<=a<=1000)
-
输出:
-
一个整数.
-
样例输入:
-
6 10
-
样例输出:
-
1
-
#include <stdio.h> int buf[1000] = {0}; int prime[1000]; int primeSize = 0; void init() { for(int i = 2; i < 1000; i++) { if(buf[i] == 1) continue; else { prime[primeSize++] = i; for(int j = i * i; j < 1000; j += i) buf[j] = 1; } } } int main() { init(); int n, a; while(scanf("%d%d",&n,&a) != EOF) { int count1[1000] = {0}; int count2[1000] = {0}; int i; for(i = 2; i <= n; i++) { int i_tmp = i; for(int j = 0; j < primeSize; j++) { while(i_tmp % prime[j] == 0) { count1[j]++; i_tmp /= prime[j]; } } } for(i = 0; i < primeSize; i++) { while(a % prime[i] == 0) { count2[i]++; a /= prime[i]; } } int k = 100000; for(i = 0; i < 1000; i++) { if(count2[i] == 0) continue; int tmp = count1[i] / count2[i]; if(tmp < k) k = tmp; } printf("%d\n",k); } return 0; }