⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 大数阶乘.cpp

📁 这是一个计算大数据阶乘的源程序代码
💻 CPP
字号:
#include<iostream>
#include<vector>
#include<string>
using namespace std ;

vector<int> result ;//定义一个全局的向量容器

void process( const int index,vector<int> & result) ; //声明核心函数
int cnt=1 ;//cnt 来纪录结果有多少位数
void main (void)
{
  int index=0 ;
int input =0 ;
cout<<"请输入你要计算的阶乘数"<<endl ;
cin>>input ;   //要求输入要计算的阶乘数 
while (input <= 0 )//如果不合里就重新输入 
    {
       cout<<"请输入合理的数据,谢谢:\n";
        cin>>input ;
    }
result.push_back(1) ;//对向量容器进行第0位初始化 
for (index=1;index<=input ;++index)
{
 process(index,result);     //利用循环来求得n!
}
cout<<"结果是"<<cnt<<"位数"<<endl;
for(int i=cnt-1; i>=0; i--) //倒序输出向量容器里的结果 
cout<<result[i] ;

cout<<endl;
}
void process(const int index ,vector<int>& result )
{
 int product=0 ;
int carry=0 ;
int remainder =0;
int i=0;
//result 里存的是前(index-1)!,共有 cnt 位数 
for (i=0; i<cnt; ++i)
{
 product = result[i] * index + carry;  
 
        carry = product / 10;//向 i+1位进的数
        remainder = product % 10; //乘以index后,得到的i位的数
        result[i] = remainder;
 }
//当最后一位计算完后,有可能有进位 ,如果有则向量容器将进位入栈 ;
    if (carry != 0)
    {
        while (carry / 10 != 0)
        {
            result.push_back (carry % 10);
            carry /= 10;
            ++cnt;
        }
        result.push_back( carry) ;
           cnt++ ;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -