NYoj 56阶乘因式分解(一)

来源:互联网 发布:宇宙巨校闪级生 知乎 编辑:程序博客网 时间:2024/06/07 07:48

阶乘因式分解(一)
时间限制:3000 ms | 内存限制:65535 KB
难度:2
描述
给定两个数m,n,其中m是一个素数。

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

输入
第一行是一个整数s(0

#include"cstdio"#include"cstring"#include"cmath"#include"algorithm"using namespace std;  int main (){    int i, l, m, j, k, n, t;    scanf("%d",&t);    while(t--)    {        scanf("%d %d",&n,&m);        long long int sum=1;        int flag=0;        for(i=2;i<=n;i++)        {            int b=i;            while(b%m==0)            {                b=b/m;                flag++;            }           }        printf("%d\n",flag);    }    return 0;}

最优解是一个递归。
很厉害,我也放上来吧

#include<iostream>using namespace std;int get(int n,int num){    if(n==0) return 0;    else return get(n/num,num)+n/num;}int main(){    int n;    cin>>n;    while(n--)    {        int a,b;        cin>>a>>b;        cout<<get(a,b)<<endl;    }}        
原创粉丝点击