NYQJ-56阶乘因式分解(一)

来源:互联网 发布:连环替代法不拿出算法 编辑:程序博客网 时间:2024/06/03 06:55
描述

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

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

输入
第一行是一个整数s(0<s<=100),表示测试数据的组数
随后的s行, 每行有两个整数n,m。
输出
输出m的个数。
样例输入
2100 516 2
样例输出
24

15

解题过程:

这到底最早我陷入了误区,把一个数全部分解质因数了,其实不必,假如看100分解质因数有多少个5,只需除以5,不能整出后,看看除了几次即可。

代码实现如下:

#include <stdio.h>int  main( ){int s;//行数int ret =0;scanf("%d",&s);while(s--){ret =0;int n,m;scanf("%d %d",&n,&m);while(n)//阶乘中每个数都分解质因数 {int x=n;if(x%m!=0){n--;continue;}else{while(x%m==0){ ret++;x/=m;}}n--;}printf("%d\n",ret); } // return 0}
运行结果



0 0
原创粉丝点击