题目

简单的阶乘
难度级别:A; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B
试题描述

从键盘上输入一个自然数 n ,输出 n 的阶乘,即 n!。n!=1*2*3*……*n,特殊的,当 n=0 时,n!为 1 。

输入
一个不超过 12 的自然数 n
输出
一个正整数,表示 n!的值。
输入示例
5
输出示例
120

分析

这题是累加的升级版,但注意事项变多了:

1.0的阶乘是1。

2.ans初始值必须给1,不管全局还是局部,全局不赋一,任何数的阶乘都是0。局部不赋1,输出的数吓死你。

代码

#include<bits/stdc++.h>
using namespace std;
int n,ans=1;//ans别忘了初始值给1,不然任何数的阶乘都是0,同时也能保证n=0时,n!=1。
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++) ans*=i;//累乘。printf("%d",ans);return 0;
}

除以上正解代码外,本题还可以使用平方和公式求解,不知道平方和公式的上网百度。

下面介绍一种令新手们无比佩服的方法:打表(注意不是坐出租车)。

打表,专门针对一些数据范围较小的题。一般使用打表的有以下两种情况:

1.没有思路。

2.自己的方法会超时。

下面讲如何打表。

首先,你需要算出数据范围内每个输入所对应的答案。一般采用手算+计算器。

对于这道题,上网百度12以内阶乘,再用swich打表就行。

#include<bits/stdc++.h>
using namespace std;
int n;
int main()
{scanf("%d",&n);switch(n){case 1:printf("1");break;//开始打表。case 2:printf("2");break;case 3:printf("6");break;case 4:printf("24");break;case 5:printf("120");break;case 6:printf("720");break;case 7:printf("5040");break;case 8:printf("40320");break;case 9:printf("362880");break;case 10:printf("3628800");break;case 11:printf("39916800");break;case 12:printf("479001600");}return 0;
}

很神奇是不是?

转载于:https://www.cnblogs.com/DARTH-VADER-EMPIRE/p/9552749.html

0058-简单的阶乘相关推荐

  1. 7-100 简单求阶乘问题 (10 分)本题要求编写程序,计算N的阶乘。输入格式:输入在一行中给出一个不超过12的正整数N。输出格式:在一行中输出阶乘的值。输入样例:4结尾无空行

    7-100 简单求阶乘问题 (10 分) 本题要求编写程序,计算N的阶乘. 输入格式: 输入在一行中给出一个不超过12的正整数N. 输出格式: 在一行中输出阶乘的值. 样例">输入样例 ...

  2. C语言 PTA-6-8 简单的阶乘计算

    题目 本题要求实现一个非负整数阶乘的简单函数 其中N是用户传入的参数,其值不超过12.如果N是非负整数,则该函数必须返回N的阶乘,否则返回0. 一.函数接口定义 int Factorial( cons ...

  3. 2021.11.18 简单计算阶乘(多种方法)及 求阶乘的和

    运用各种方法计算阶乘及阶乘之和 三种方法计算阶乘 一.利用for循环法 二.利用导入库法计算阶乘 三.利用函数递归法 在原有基础上计算阶乘之和 学习方向: 三种方法计算阶乘 一.利用for循环法 &q ...

  4. 程序求1!+2!+3!+...+1000!的和, 求1到1000阶乘之和

    求1到1000阶乘之和 今天在脉脉的匿名区看到一个这个面试题,有个面试官说面试者连这道题都不会写,我想了几分钟就能解出来,把代码写下来.写得有点繁琐了~~~,有高手可以指导更简单的方法了么... 求一 ...

  5. 大数问题--超大数(10000以内)的阶乘

    问题分析:很容易发现,由于N的范围很大,一般简单的阶乘算法肯定会溢出,因为当20!已经接近long long的上限了. 所以得用大数问题的解法,就是模拟运算: 下面基于上面的思想,给出此题的两种代码实 ...

  6. Akka in JAVA(三)

    2019独角兽企业重金招聘Python工程师标准>>> Akka in JAVA(三) 上两个部分讲了Akka的基本知识和常见的用法.接下来讲一讲Akka的远程调用以及集群的使用.因 ...

  7. 通俗易懂----尾递归

    差距在这: 线性递归:计算到头之后还要再回溯一遍 (相当于运算了两遍) 尾递归 :计算到头就得到结果,不回溯  (就运算一遍) 看代码,简单求阶乘公式: 线性递归: // Line recursion ...

  8. JS编程建议——32:使用制表

    建议32:使用制表 代码所做的事情越少,它的运行速度就越快,因此,避免重复工作很有意义.多次执行相同的任务也在浪费时间.制表法通过缓存先前计算结果为后续计算所使用,避免了重复工作,这使得制表成为递归算 ...

  9. C#LeetCode刷题-数学

    数学篇 # 题名 刷题 通过率 难度 2 两数相加 29.0% 中等 7 反转整数 C#LeetCode刷题之#7-反转整数(Reverse Integer) 28.6% 简单 8 字符串转整数 (a ...

最新文章

  1. 大学mysql教程_MYSQL教程:新手该看的MYSQL操作
  2. strlen 与 sizeof 的区别详解
  3. YbtOJ#20067-[NOIP2020模拟赛B组Day5]糖果分配【dp】
  4. timer控件的使用
  5. hssfcell判断文本类型_ICML 2020 | 显式引入对分类标签的描述,如何提高文本分类的效果?...
  6. K-means聚类分析算法(一)
  7. Linux进阶之使用Oh-My-Zsh打造炫酷终端
  8. Ubuntu 对比度调节
  9. 5.PSR-7: HTTP message interfaces
  10. 超级好看的windows终端美化教程
  11. mysql创建唯一非聚集索引_创建聚集索引、非聚集索引、唯一索引、唯一键约束...
  12. 误差反向传播(手把手教你推导如何通过反向传播更新参数)
  13. JAVA调用IBM的Lotus Notes
  14. 征服面试官的50道Redis高频通关面试题
  15. 最新帝国CMS花生小说系统源码+花生日记引流导航模板+带采集工具
  16. Uni-app登录态管理(vuex)
  17. querylist V4 图片下载
  18. input框不可编辑的三种方法
  19. 百度地图api周边搜索功能
  20. Appium的实现原理

热门文章

  1. 希尔排序法对一维数组排序
  2. EntityFramework SaveChange()方法不能更新的问题
  3. U-BOOT下使用bootm引导内核方法
  4. Java学习(16)--System 类/Date 类/ Calendar类
  5. shell函数的返回值不能大于255的问题
  6. 开源 java CMS - FreeCMS2.6 互动信件
  7. apache vhost
  8. python -- 青少年如何使用 Python 开始游戏开发
  9. Hibernate(2)——Hibernate的实现原理总结和对其模仿的demo
  10. python类、对象、方法、属性之类与对象笔记