NYOJ【56】阶乘因式分解(一)【思维】&&【数学】

来源:互联网 发布:阿里布达祭txt 百度云 编辑:程序博客网 时间:2024/05/16 19:23

阶乘因式分解(一)

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

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

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

输入
第一行是一个整数s(0<s<=100),表示测试数据的组数
随后的s行, 每行有两个整数n,m。
输出
输出m的个数。
样例输入
2100 516 2
样例输出
2415
解析:
    对于样例一,100/5=20,100/25=4,结果为20+4=24. 样例二,16/2=8,16/4=4,16/8=2,16/16=1
结果为8+4+2+1=15.如果n%m!=0,则判断下一个,即n--;
程序如下:
#include<cstdio>int main(){int t;scanf("%d",&t);while(t--){int n,m;int ans=0;scanf("%d%d",&n,&m);int sum=m;for(int i=1; ; i++){if(n%sum==0){ans+=n/sum;sum*=m;if(sum>n)    break;}else    n--;}printf("%d\n",ans);}return 0;}


原创粉丝点击