大数阶乘
Posted xwh-blogs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数阶乘相关的知识,希望对你有一定的参考价值。
模板如下:
#include <stdio.h> int main() { int a[20001];//储存每一位所得到的数 int temp,digit,n,i,j=0;//temp每次的得数 digit每次得数的位数 scanf("%d",&n); a[0]=1;//从1开始乘 digit=1;//位数从第一位开始 for(i=2;i<=n;i++) { int num=0; for(j=0;j<digit;j++) { temp=a[j]*i+num;//将一个数的每一位数都分别乘以i, a[j]=temp%10;//将一个数的每一位数利用数组进行储存 num=temp/10; } while(num)//判断退出循环后,num的值是否为0 { a[digit]=num%10;//继续储存 num=num/10; digit++; } } for(i=digit-1;i>=0;i--)//倒序输出每一位 printf("%d",a[i]); printf(" "); return 0; }
该模板不只是用于单纯的求阶乘,还适用于由阶乘衍生出来的一系列问题,如求某个数的阶乘输出中最右边那个不为0的数是多少(蓝桥杯:试题 算法训练 P0505)
此时只需要将模板稍微改动便可以轻松AC。
代码来源:
https://blog.csdn.net/lisp1995/article/details/52403507?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
以上是关于大数阶乘的主要内容,如果未能解决你的问题,请参考以下文章