您的位置:首页 > 其它

2017.4.16 阶乘之和 思考记录

2017-04-16 18:38 274 查看
        普及组高精题、、

             但要注意:   1、高精加模拟乘法要注意不要加两边自己,再开循环,不然会算成指数、、

                                    2、高精乘单精注意每一位对好乘就行了

码:

#include<iostream>
#include<cstdio>
using namespace std;
int ans[99999],n,i,lin[99999],j;
void gjc(int a)
{
int jin=0,lin2,i;
for(i=1;i<=lin[0];i++)
{
lin2=jin;
jin=(lin[i]*a+jin)/10;
lin[i]=(lin[i]*a+lin2)%10;
}
//cout<<jin;

while(jin>0)
lin[++lin[0]]=jin%10,jin/=10;
}
void gjj()
{
int jin=0,lin2,i;
for(i=1;i<=max(lin[0],ans[0]);i++)
{
lin2=jin;
jin=(lin[i]+ans[i]+jin)/10;
ans[i]=(lin[i]+ans[i]+lin2)%10;

}
ans[0]=max(lin[0],ans[0]);
if(jin>0)
ans[++ans[0]]=jin;

}
int main()
{
scanf("%d",&n);
lin[0]=1;
lin[1]=1;
ans[0]=1;
ans[1]=0;
for(i=1;i<=n;i++)
{

gjc(i);
//cout<<lin[1];
gjj();
}
for(i=ans[0];i>=1;i--)
printf("%d",ans[i]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: