C语言问题 急需解决
DescriptionFresher自从学会阶乘概念以后,就着迷了,每天都想着阶乘的各种巧妙应用及其求解。有一天,Fresher正在学习因式分解,于是就突发奇想:当N较大...
Description
Fresher自从学会阶乘概念以后,就着迷了,每天都想着阶乘的各种巧妙应用及其求解。有一天,Fresher正在学习因式分解,于是就突发奇想:当N较大时,求解其阶乘已经比较困难,要是求解其因子就更困难了。假设现在需要求解N!能够被3整除的次数,您可以帮Fresher想个奇妙的方法吗?
例如:4!能够被3整除1次,6!能够被3整除2次,9!能够被3整除4次……
Input
第一行1个正整数M,代表数据组数(M<=1000)
紧跟着有M行,每行有个正整数N(0<N<=5000)
Output
结果有M行,每行1个正整数K,代表N!被3整除的次数。
Sample Input
4
1
2
3
4
Sample Output
0
0
1
1 展开
Fresher自从学会阶乘概念以后,就着迷了,每天都想着阶乘的各种巧妙应用及其求解。有一天,Fresher正在学习因式分解,于是就突发奇想:当N较大时,求解其阶乘已经比较困难,要是求解其因子就更困难了。假设现在需要求解N!能够被3整除的次数,您可以帮Fresher想个奇妙的方法吗?
例如:4!能够被3整除1次,6!能够被3整除2次,9!能够被3整除4次……
Input
第一行1个正整数M,代表数据组数(M<=1000)
紧跟着有M行,每行有个正整数N(0<N<=5000)
Output
结果有M行,每行1个正整数K,代表N!被3整除的次数。
Sample Input
4
1
2
3
4
Sample Output
0
0
1
1 展开
2018-11-30
展开全部
#include <stdio.h>
int main()
{
int m,n;
while(scanf("%d",&m)!=EOF)
{
for(scanf("%d",&n);m;m--)
{
int i,j,cnt;
for(i=1,cnt=0;i<=n;++i)
{
for(j=i;j;j/=3)
{
if(j%3==0)
{
cnt++;
}
}
}
printf("%d\n",cnt);
}
}
return 0;
}
更多追问追答
追问
这样写 结果不正确(希望大佬再看看 帮帮孩纸QAQ)
好像从10开始,结果就不对了
正确的:
12——5
15——6
你的:
12——7
15——8
追答
#include <stdio.h>
int main()
{
int m,n;
while(scanf("%d",&m)!=EOF)
{
for(scanf("%d",&n);m;m--)
{
int i,j,cnt;
for(i=1,cnt=0;i<=n;++i)
{
for(j=i;j;j/=3)
{
if(j%3==0)
{
cnt++;
}
else
{
break;
}
}
}
printf("%d\n",cnt);
}
}
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不清楚
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询