N!


Problem Description
Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N!
Input
One N in one line, process to the end of file.
Output
For each N, output N! in one line.
Sample Input
  
1 2 3
Sample Output
  
1 2 6

这道题目有一些东西特别要注意:

1.0的阶乘是存在的!0!=1,我当初提交这道题目是在这一点上吃了不少的亏!我开始是是写的while(cin>>n && n>0);交上去的时候老是报错!但是我就纳闷了,没错啊!后来才发现,这句应该写成while(cin>>n && n>=0);或者while(scanf("%d",&n)!=EOF);

2.10000的阶乘是在是太大了!我的数组开4000居然还是错,开8000还错!后来索性开个10000,居然对了!太吃惊!

//首先需要肯定,程序是正确的
//这算是大数乘除法!记住他们是如何处理的!由于数据很大,用基本数据类型根本无法满足要求,只能用数组来表示!
//大数乘法!10000!的阶乘是在太大!几次数组开小了都报错误!
#include <iostream>
#include<cstdio>
#include<memory.h>
using namespace std;
#define MAX 10000
#define BASE 100000//base只是一个基度,对最终取值并没有影响,相反,base取值愈大,计算量愈小
//base发生改变的时候,下面的输出也要相应地做出调整,否则也会输出错误答案!除非当base取10!
int h[MAX];
//这是我第二次接触大数的乘法!现在复习一下吧!很好的算法!int main()
{int i,j,k,carry;int n;while(scanf("%d",&n)!=EOF){  memset(h,0,MAX*sizeof(int));//赋值,每一个都置为0 for(i=1,h[MAX-1]=1;i<=n;++i)//运用递归,并且h[1]=1; for(k=MAX-1,carry=0;k>=0;--k)//从最后一位开始相乘,依次向前与每一位相乘 { carry+=i*h[k];h[k]=carry%BASE;carry/=BASE;//carry表示进位}       for(j=0;j<MAX && h[j]==0;++j);//从0位开始搜索,找到不为0的第一个数 printf("%d",h[j++]);//像是这个输出,就很妙了,第一位可能不足五位,就地输出!for(;j<MAX;++j)printf("%05d",h[j]);//处在中间的值也可能没有五位,这时候要注意了,往左边加0,凑足5位,不然答案会出错!    printf("\n");}//system("pause");return 0;
}

杭电1042—— N!(大数乘法的应用!)相关推荐

  1. 杭电oj java printf_杭电oj1042题大数,java,百思不得其解为何WA,求指教

    我看了标准答案,他们是这样的:importjava.math.BigDecimal;importjava.math.BigInteger;importjava.util.Scanner;publicc ...

  2. 杭电--N!(大数)

    N! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Subm ...

  3. 杭电acm第2304题答案c语言,【转】杭电ACM试题分类

    注:网上搜的 第一篇 1001 这个就不用说了吧 1002 简单的大数 1003 DP经典问题,最大连续子段和 1004 简单题 1005 找规律(循环点) 1006 感觉有点BT的题,我到现在还没过 ...

  4. 杭电oj HDOJ 1018 Big Number(斯特林公式求大数阶乘的位数)

    杭电oj HDOJ 1018 Big Number 题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1018 Problem Description In ...

  5. hdoj杭电问题分类

    杭电上的题虽然多,但是一直苦于找不到问题分类,网页都是英文的,所以平时做题也没怎么看,今天仔细一看,问题分类竟然就在主页....做了那么久的题居然没发现,表示已经狗带..不要笑,不知道有没有像我一样傻 ...

  6. 杭电ACM(HDUOJ)试题分类

    杭电ACM试题分类 第一篇 1001 这个就不用说了吧                      1002 简单的大数                            1003 DP经典问题,最 ...

  7. 杭电ACM题目类型整理

    版权声明:(╯3╰) 转载请注明: http://blog.csdn.net/bat67 杭电acm题目分类版本1 1002 简单的大数 1003 DP经典问题,最大连续子段和 1004 简单题 10 ...

  8. 【ACM】杭电OJ 1002

    题目链接:杭电OJ 1002 表面上看是a+b,很简单,其实是大数的相加,所以要考虑的因素有很多:(瞬间觉得要是能用Python多好,哈哈哈) 还有!!! 要特别注意格式的输出!!!真的害死人!!!摸 ...

  9. 杭电1108java_按照这个步骤来刷题,迷茫的你两个月亦能成为王者

    原标题:按照这个步骤来刷题,迷茫的你两个月亦能成为王者 作者 | bigsai 来源 | bigsai(ID:bigsai) 前言 大家好,我是bigsai哥哥.最近很多小伙伴问我怎么入门数据结构与算 ...

最新文章

  1. PHP Webservice的发布与调用
  2. python链接安卓 跳一跳
  3. SpringBoot2.1+SpringCloud:注册中心搭建(Eureka)
  4. Spark运行原理剖析
  5. Oracle SQL Loader数据导入
  6. Dubbo源码分析系列-Dubbo的动态编译原理
  7. socket android用法,Android NDK中socket的用法以及注意事项分析
  8. jQuery 1.11 / 2.1 beta 版发布
  9. axios与ajax对比,vue体系中axios请求对比jquery-ajax请求
  10. UITextfield键盘相关设置
  11. 使用Xcode Instruments Leak解决内存泄漏问题
  12. 插件基础篇3:jquery 插件开发备注
  13. python 模拟触屏_python一次简单游戏辅助的经历(截取屏幕模拟键盘)
  14. Spring的IOC和AOP,学不会Spring的,你看我的文章
  15. c#实现任务栏气泡提醒
  16. 如何读到一个文件的最后更新日期和时间
  17. SpringBoot+LayUI+MybatisPlus+Echarts图表 前后端分离 实现数据统计功能
  18. 【LeetCode】解题309:Best Time to Buy and Sell Stock with Cooldown(动态规划)
  19. String.format()详解与遇到的问题(UnknownFormatConversionException)
  20. Web自动化_APP自动化_接口自动化_测试框架汇总

热门文章

  1. 致远项目管理SPM系统案例:完达山乳业费控管理系统
  2. 学习【全栈之巅】Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台笔记(2.8-2.9)
  3. GPU Direct p2p、 Nvlink 、GPU DirectRDMA
  4. Docker安装nacos
  5. 计算机网络原理【三】之 传输层
  6. 记事本写的html文件保存到c:\inetpub\wwwroot失败
  7. cmd如何打开某一盘符下的文件
  8. php7 win 升级,(win10)Wamp环境下php升级至PHP7.2
  9. scp免密登录,同时也适应ssh免密登录
  10. 六千字带你快速上手操作MySQL