NYOJ

来源:互联网 发布:java web开发需求 编辑:程序博客网 时间:2024/06/07 22:41

NYOJ - 70:阶乘因式分解(二)

标签:算法、数论
参考资料:

质因数分解式
http://blog.csdn.net/wingrez/article/details/78054722

相似题目:

NYOJ - 56:阶乘因式分解(一)
http://blog.csdn.net/wingrez/article/details/78056984

题目

给定两个数n,m,其中m是一个素数。将n(0<=n<=2^31)的阶乘分解质因数,求其中有多少个m。注:^为求幂符号。

输入

第一行是一个整数s(0<s<=100),表示测试数据的组数。随后的s行, 每行有两个整数n,m。

输出

输出m的个数。

输入样例

3
100 5
16 2
1000000000 13

输出样例

24
15
83333329

参考代码

//算法1#include<cstdio>int main(){    int t;    int n,m;    scanf("%d",&t);    for(int i=1;i<=t;i++)    {        scanf("%d%d",&n,&m);        int cnt=0;        for(int j=m;j<=n;j+=m)        {            int temp=j;             while(temp%m==0)            {                temp/=m;                cnt++;            }        }        printf("%d\n",cnt);    }    return 0;}        
 //算法2#include<cstdio>int main(){    int t;    int n,m;    scanf("%d",&t);    for(int i=1;i<=t;i++)    {        scanf("%d%d",&n,&m);        int ans=0;        while(n>0)        {            ans+=n/m;            n/=m;        }        printf("%d\n",ans);    }    return 0;}