NYOJ 阶乘因式分解(二)

来源:互联网 发布:中国农行软件 编辑:程序博客网 时间:2024/05/17 07:51


阶乘因式分解(二)

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述

给定两个数n,m,其中m是一个素数。

将n(0<=n<=2^31)的阶乘分解质因数,求其中有多少个m。

注:^为求幂符号。

 

输入
第一行是一个整数s(0<s<=100),表示测试数据的组数
随后的s行, 每行有两个整数n,m。 
输出
输出m的个数
样例输入
3100 516 21000000000  13
样例输出
241583333329
来源
[苗栋栋]原创
上传者


思路:m为素数,每一次相乘时,除了是m的的倍数,否者是没有m这个质因数,因此为了节约时间,不是m的倍数,就直接过,只算m倍数的数。



#include<stdio.h>#include<string.h>int main(){    int t;    scanf("%d",&t);    while(t--)    {        long long int n,i,s=0,k;        int m;        scanf("%lld %d",&n,&m);          for(i=m;i<=n;i+=m)        {   k=i;            while(k%m==0)            {                s++;                k=k/m;            }        }        printf("%lld\n",s);    }    return 0;}


0 0