您的位置:首页 > 其它

南阳理工ACM(题目56)

2014-07-31 21:26 218 查看
描述

[b][b]给定两个数m,n,其中m是一个素数。[/b][/b]

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

输入第一行是一个整数s(0<s<=100),表示测试数据的组数

随后的s行, 每行有两个整数n,m。
输出输出m的个数。
样例输入
2
100 5
16 2

样例输出
24

15

参考题解ac:

#include <stdio.h>

int main(void)

{

int N,n,m,count;

scanf("%d",&N);

while(N--)

{ count=0;

scanf("%d%d",&n,&m);

while(n)

{

n=n/m;

count=count+n;

}

printf("%d\n",count);

}

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;

}

}

较差方案ac:

#include <stdio.h>

int main()

{

int N;

scanf("%d",&N);

while(N--)

{

int m,n,i,j,count=0;

scanf("%d%d",&m,&n);

for(i=2;i<=m;i++)

{

j=i;

while(j)

{

if(j%n==0)

{

count++;

j=j/n;

}

else

break;

}

}

printf("%d\n",count); //不添加换行就WR,也不知道为啥?

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: