请问这道的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;