题目:计算n的阶乘尾部零的个数
#include<stdio.h>
int main()
{
int t,sum=1,i,j,r,num=0;
scanf("%d",&t);//输入一个数
for(i=1;i<t+1;i++)
{
sum=sum*i;
} //求阶乘sum
printf("%d\n",sum);
for(j=10;;j*=10)
{
r=sum%j;
if(r==0)
num++;
else
break;
}
printf("%d\n",num);
return 0;
}
超出 int 类型的数值范围,数据就变成 负数了。
是因为值太大了吗,一计算14之后的阶乘,都是错的
建议 printf("%d\n",num); 改为 printf("%d %d\n", sum,num);
这样你可以看看sum和num是不是都是对的
感谢,应该是超出范围之后就不能计算了,是吧?
你把int改成longlong
#include <iostream> using namespace std; int main() { longlong k,n,j=0,i=0; cin>>n; for(i=1;i<=n;i++){ for(j=1;j<=i;j++){ k=i*j; cout<<j<<"*"<<i<<"="<<k<<" "; } cout<<endl; } return 0; }