博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数n!
阅读量:5057 次
发布时间:2019-06-12

本文共 1131 字,大约阅读时间需要 3 分钟。

 

题目地址:  
通常解决大数运算数据超出范围的问题时,一般采用数组去模拟。求算n!可以看成是每次两个整数相乘的过程,因此可以模拟成大数相乘的过程。只是需要增加一些变量去存储中间的进位和当前位的数值。
#include 
using namespace std;#define MAX_WEI 100000int result[MAX_WEI];int wei_location;int up;int main(){ int i,n; int j; while(scanf("%d",&n)!=EOF) { memset(result,0,sizeof(result)); result[1] =1; wei_location=1; //当前结果的位数,便于相乘和最后输出 up =0; if(n==0 || n==1) { printf("1\n"); continue; } for(i=2;i<=n;i++) //n!中的每个数 { for(j =1,up =0;j<=wei_location;j++) //模拟乘法步骤:每一位与当前数相乘 { result[j] = result[j] *i + up; //当前数+前面的进位数 up = result[j]/10; result[j] =result[j]%10; //每个数存一位 } while(up > 0) { result[j++] += up%10; //注意跳出来是j是多一的 up= up/10; } wei_location= j -1;//注意跳出来是j是多一的 } for(i = wei_location;i>=1;i--) (i!=1)? printf("%d",result[i]) : printf("%d\n",result[i]); } return 0;}

转载于:https://www.cnblogs.com/cheng07045406/p/3234378.html

你可能感兴趣的文章
关于js sort排序方法
查看>>
JAVA面试常见问题之Redis篇
查看>>
javascript:二叉搜索树 实现
查看>>
网络爬虫Heritrix源码分析(一) 包介绍
查看>>
__int128的实现
查看>>
Problem - 1118B - Codeforces(Tanya and Candies)
查看>>
jdk1.8 api 下载
查看>>
svn 图标不显示
查看>>
getElement的几中属性介绍
查看>>
iOS 使用Quartz 2D画虚线 【转】
查看>>
平面最接近点对
查看>>
HTML列表,表格与媒体元素
查看>>
PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点?
查看>>
感谢青春
查看>>
Jquery Uploadify4.2 falsh 实现上传
查看>>
雨林木风 GHOST_XP SP3 快速装机版YN12.08
查看>>
linux基础-命令
查看>>
java对象的深浅克隆
查看>>
Hadoop流程---从tpch到hive
查看>>
数据结构3——浅谈zkw线段树
查看>>