
蓝桥杯练习BASIC-30 阶乘计算
发布日期:2021-05-14 23:51:01
浏览次数:42
分类:精选文章
本文共 996 字,大约阅读时间需要 3 分钟。
#include#include #include using namespace std;#define N 10005vector factorial[N];void fac(int n) { //核心代码 int len = factorial[n - 1].size();//上一个阶乘数的长度 for (int i = 0; i < len; i++) { //将上一个数的每一位都与当前位相乘,大数乘法 factorial[n].push_back(n * factorial[n-1][i]);//存入当前层数组里 } int carry = 0,i = len-1;//carry进位,i从后往前遍历 while (carry != 0||i >= 0) { if (i >= 0)//计算每一位加上进位后的余10数,就是当前位的值,除10得当前位进位 { int s = factorial[n][i] + carry; carry = s / 10; factorial[n][i] = s % 10; i--; } else { //如果遍历到数组开头,对开头剩下的数直接进行进位存储 factorial[n].insert(factorial[n].begin(), carry % 10); carry /= 10; } }}void make_table() { //制表,将每个阶乘放在一个数组里 factorial[0].push_back(1);//存入0的阶乘1 factorial[1].push_back(1);//存入1的阶乘1 for (int i = 2; i < 1001; i++) { //从2开始计算 fac(i); }}int main() { make_table(); int n; while (cin >> n) { for (int i = 0; i < factorial[n].size(); i++) { cout << factorial[n][i]; } cout << endl; } return 0;}```
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月28日 19时37分02秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
小程序:防止父方法被子方法冒泡,使用catchtap
2021-05-14
vue报错 created hook错误
2021-05-14
单选框点击文字也能选中
2021-05-14
此主机支持Intel VT-x,但Intel VT-x 处于禁用状态。
2021-05-14
06-局部变量和全局变量
2021-05-14
12-面向对象1
2021-05-14
python基础总结 异常处理
2021-05-14
解决Vue源码运行错误
2021-05-14
HDU - 4109 Instrction Arrangement
2021-05-14
Lua websocket长连接
2021-05-14
SQL 分页查询 返回总条数
2021-05-14
重写的特点
2021-05-14
Linux运行C语言文件
2021-05-14
C字符串高级
2021-05-14
C语言_动态内存分配练习
2021-05-14
Linux学习_系统进程概念
2021-05-14
七层网络模型(待添加)
2021-05-14
考研复试——KY276 Problem C
2021-05-14
老鸟带你画tiled lines
2021-05-14
MybatisPlus自定义Sql实现多表查询
2021-05-15