NYOJ 70 阶乘因式分解(二)

时间限制:3000ms | 内存限制:65535KB

难度:3

描述

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

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

注:^为求幂符号。

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

分析:

这道题的关键是效率,找出最有效的算法。(和《编程之美》上的某道题类似)

#include <iostream>#include <cstring>#include <string>using namespace std;int main(){int s,n,m,ans;cin>>s;while(s–){cin>>n>>m;ans=0;if(n<2)cout<<ans<<endl;else{while(n/m){ans+=(n/m);n/=m;}}cout<<ans<<endl;}return 0;}

如果心在远方,只需勇敢前行,梦想自会引路,

NYOJ 70 阶乘因式分解(二)

相关文章:

你感兴趣的文章:

标签云: