题目描述很简单,给你正整数 n 、m,求一个最大的正整数 k使 n! 能被 m k m^k mk 整除。
Input
有多组数据,第一行输入一个整数 T(T<500)代表有 T组数据.
接下来每行输入一组数据,n(0<n<10000) ,m(1< m<5000).
Output
对应每组数据,输出一个最大的正整数 k 使 n!能被 m k m^k mk整除,若不存在这样的正整数,则输出 −1.
Examples
Input
2
10 2
100 2
Output
8
97
思路
因为10000!很大 我们不能求出来 ,所以我们不能直接算。 我们可以求出n和m的公共质因子,从而求出结果。
代码
#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
int a[5001];
int b[5001];
int size;
void Init()
{
size=0;
for(int i=2;i