请问这道的c++题怎么做,最好用while做

来源:百度知道 编辑:UC知道 时间:2024/05/28 04:06:32
1.对于任意给定的一个正整数n(n的范围不会超过10000),统计其阶乘n!的末尾中0的个数。

答案如下:
#include<iostream>
using namespace std;

int main()
{
int n,i=1,amount=0;
long s=1;
cout<<"输入一个正整数:";
cin>>n;

while(i++<=n)
s*=i;

while(s%10==0)
{
s/=10;
amount++;
}

cout<<n<<"!的末尾中有:"<<amount<<"个0!"<<endl;

return 1;
}

验证通过!
说明:输入的n不要太大,太大了s就要益处.只要有支持更大范围的类型定义s就可以了.

n的范围不会超过10000,电脑就挂了。。。

#include<stdlib.h>
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>

const int N=1000;

int compute(unsigned int *s,int n)//s用来存储一次的计算结果,n为本次计算的乘数,函数返回结果中有效数据的节数
{
unsigned long p; //暂时存放一节的结果
unsigned long more=0;//一次乘法的进位
int i; //循环变量

static int m=1;//存放结果中的节数,三位一节
static int q=0;//存放结果中最后为零的节数

//计算本次的结果
for(i=q;i<m;