N!

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 100274    Accepted Submission(s): 30006

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

题目大意与分析

题目意思很简单,就是求阶乘,我们可以看到这是一个大数乘小数的问题,因为N是小于10000的,所以每次都是乘一个int可以存下的数,但是另一个乘数可能是一个大数,所以称之为大数乘小数。

那么如何计算呢:

用字符数组存大数,然后和大数加法很像,与竖式计算一样的原理,大数的每一位都要去乘这个小数,模10是当前位上的值,除以10是进位。

与大数加法略有不同的是,大数要倒着存,比如123 就要anss[1]=3,anss[2]=2,anss[3]=1,这是因为加法的进位只会进一位,乘法进位可能会进好几位,倒着存容易处理。

代码

#include<bits/stdc++.h>using namespace std;
int anss[1000000],n,cnt,i,j,k,temp;
int main()
{while(scanf("%d",&n)!=EOF){memset(anss,0,sizeof(anss)); anss[1]=1;cnt=1;                            //记录当前结果长度 for(i=1;i<=n;i++){k=0;                        //记录进位 for(j=1;j<=cnt;j++){temp=(anss[j]*i+k)%10;k=(anss[j]*i+k)/10;anss[j]=temp;} while(k){anss[++cnt]=k%10;k=k/10;}}for(i=cnt;i>=1;i--)printf("%d",anss[i]);printf("\n");}
}

转载于:https://www.cnblogs.com/dyhaohaoxuexi/p/11327425.html

HDU 1042 N!(高精度阶乘、大数乘法)相关推荐

  1. *【HDU - 1042 】 N! (大数乘法)

    题干: Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! Input One N in one line, process ...

  2. 杭电1042—— N!(大数乘法的应用!)

    N! Problem Description Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! Input One N i ...

  3. hdu 1042 N! 高精度运算

    N!                                                                              Time Limit: 10000/50 ...

  4. 牛客题霸 [ 大数乘法] C++题解/答案

    牛客题霸 [ 大数乘法] C++题解/答案 题目描述 以字符串的形式读入两个数字,编写一个函数计算它们的乘积,以字符串形式返回. (字符串长度不大于10000,保证字符串仅由'0'~'9'这10种字符 ...

  5. 大数乘法(快速傅立叶变换)下

    博客搬家:最爱午后红茶 大数乘法(快速傅立叶变换)上 上篇已经已经讲了多项式乘法由系数表示法转化为点值表示法(即求值)的FFT算法的过程:接下来讲插值算法,它需不需要用新的算法写一遍呢?并不用这么麻烦 ...

  6. 【算法】大数乘法问题及其高效算法

    题目 编写两个任意位数的大数相乘的程序,给出计算结果.比如: 题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 和 123 输出: 输出乘积,如:15185 ...

  7. (C语言)高精度阶乘

    题目描述 启明星软件组组长听说我们会乘法之后,立马让我们帮他算一下阶乘(怎么有这么坏的组长). 此题也很简单只需要算一下不大于100的数n的阶乘就好了,看我多好数据一下子少了10倍哦! 输入 输入有多 ...

  8. C++求阶乘四种方法,阶乘和,高精度阶乘

    目录 前言 一.阶乘和是什么? 二.题目 三.对错代码对比 1.错误代码 2.正确代码 四,拓展(以下均多组输入) 1,简单阶乘(int递归) 2,阶乘改进1(long long递归) 3,阶乘改进2 ...

  9. 大数乘法【极简思路、代码模板】

    793. 高精度乘法 - AcWing题库 极简思路 大数乘法可能和前面我们提到的大数减法 和 大数加法 的分治 思路不太一样,对于大数乘法我们可以有更加简单的思路. 这里提到的大数乘法,是针对与 一 ...

  10. hdu A + B Problem II(大数相加,数组实现)

    hdu A + B Problem II(大数相加,数组实现) 题目走起 注意最后一个case 不需要换行 下面代码 #include<stdio.h> #include<strin ...

最新文章

  1. 科学革命与科学教科书
  2. 精读《React PowerPlug 源码》
  3. php:Mcrypt响应慢的原因解决备注
  4. mac下为什么光标按方向键只能一个字一个字地蹦
  5. boost::serialization模块测试 auto_ptr 序列化的测试程序
  6. 你不会真的以为自己懂得计算机网络吧?
  7. python数据分析图表展示_1行代码实现Python数据分析:图表美观清晰,自带对比功能丨开源...
  8. [css] 说说你对相对定位、绝对定位、固定定位的理解
  9. 联想笔记本java环境变量_联想ThinkPad笔记本如何添加系统环境变量?
  10. 软件工程导论——第三章——需求分析
  11. 生意参谋高阶指数换算api、指数换算api、生意参谋交易指数换算api、生意参谋数据查询api
  12. Java IO流处理 面试题汇总
  13. 如何优雅的(不花钱)获取一本技术图书
  14. 基于stm32的100KV高压发生器 倍压电路
  15. python函数之enumerate()快速打印出列表中的元素以及对应的下标
  16. trivial/nontrival函数
  17. NetLogo学习笔记1 —— 初步认识
  18. Computer Vision的尴尬---by林达华
  19. mysql 竖列变成横行_mysql 横变竖 竖变横
  20. pyecharts的各个系列配置项设置示例——个人整理与分享

热门文章

  1. effective c++条款11扩展——关于拷贝构造函数和赋值运算符
  2. 全国计算机等级考试题库二级C操作题100套(第39套)
  3. 深度学习都是非凸问题_神经网络的损失函数为什么是非凸的?
  4. python自动获取cookie_selenium3+python自动化12-cookie相关操作(获取和删除)
  5. mysql函数lead用指定的字符串实现左填充指定长度
  6. vscode浏览器打开html
  7. 前端工具:推荐几款UI设计师好用的设计软件
  8. SQLServer常用的配置函数笔记
  9. 收集10个顶级的CSS3代码生成器
  10. Shell脚本中函数返回值的用法笔记