最近在做一道很有意思的大数阶乘,我写了很复杂的一个代码,突然在网上看到了一个很简单的代码,所以我想记录下来,希望博主可以谅解 博主 原网址:点击打开链接
直接给大家上代码讲吧。
#include<iostream>
#include<cstdio>
#include<cstring>
int s[100000]={0};//数组用来储存结果。
using namespace std;
int main()
{
int n,sum=1,i,j,temp=0,h=0,l;
s[0]=1;//初始化为1。
l=1;
scanf("%d",&n);
for(i=2;i<=n;i++)//1就不用在运行了。
{
for(j=1;j<=l;j++)//这里,你想不通就无法理解这个代码。
{ 1 5 ——————>i
temp=s[j-1]*i+h; 1 2 1 ——————>s中储存的数据。
s[j-1]=temp%10; -----------
h=temp/10; 1 5
} 3 0
while(h) 1 5
{ ---------------//想不通的看这个图,自己理解一下,因为不知该怎么讲。
l++; 1 8 1 5
s[l-1]=h%10;
h/=10;
}
}
for(i=l-1;i>=0;i--)
{
printf("%d",s[i]);
}
cout<<endl;
}
代码我当初看的时候博主说很容易理解,原谅我的脑子不灵活,理解了好长时间。