您的位置:首页 > 编程语言 > C语言/C++

蓝桥杯 练习系统 基础练习 阶乘计算(C++)

2020-03-06 14:39 579 查看

总结

  • 把常规计算放到切分成代码上方便实现的步骤
  • 外层循环和内层循环不能少
  • 二十分钟后觉得自己还没有头绪的,或者头绪很难实现的,直接去网上参考别人的算法,算法思维也是通过多见识见识,拿到自己手里把玩把玩再培养出来的
    核心算法
  • 自己一直在想整个数组长度究竟应该是多长,动态分配还是如何
  • 数组的进位如何实现,进一位简单,进三位,四位,甚至是 是十位往上的又该如何进位
  • 其实以上的想法有必要,但是真正的解决方案往往就蕴藏在 emmmmm(或许是从简单的第一步开始的,毕竟这个题目就是一步一步的加到数组里的)
for (int i = 1; i <= n; ++i) {
for (int k = 0; k < Max; ++k) {
m = temp[k] * i + r;
temp[k] = m % 10;
r = m / 10;
}
}
  • 网上一直找一个整型数组的实际元素元素长度,打算来控制输出,但是一直没有好的解决方案
  • 这个算法简单解决了大型 整型数组输出的问题
for (j = Max - 1; j >= 0; j--) {
if (temp[j]) break;
}
for (int k = j; k >= 0; k--) {
cout << temp[k];
}

代码

#include<iostream>

#define Max 5000
using namespace std;

int main() {
int temp[Max] = {0}, n, r = 0, m, j;
cin >> n;
temp[0] = 1;
for (int i = 1; i <= n; ++i) {
for (int k = 0; k < Max; ++k) {
m = temp[k] * i + r;
temp[k] = m % 10;
r = m / 10;
}
}

for (j = Max - 1; j >= 0; j--) {
if (temp[j]) break;
}
for (int k = j; k >= 0; k--) {
cout << temp[k];
}return 0;
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
彩虹编程 发布了21 篇原创文章 · 获赞 0 · 访问量 335 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: