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


Sample Output


题目大意与分析

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

那么如何计算呢:

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

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

代码

#include<bits/stdc++.h>

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

HDU 1042 N!(高精度阶乘、大数乘法)的更多相关文章

  1. 51nod1057-N的阶乘(大数乘法巧解)

    这道大数乘法开始我是想套板子模拟的..然后就发现2/3的例子都wa了.(惊了).然后在思考后发现n2的板子的确过不了这么多的大数.(不看题的下场).所以,我在网上发现了分块求大数的方法.%%% 思路来 ...

  2. hdu 1042 N!(高精度乘法 + 缩进)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1042 题目大意:求n!, n 的上限是10000. 解题思路:高精度乘法 , 因为数据量比较大, 所以 ...

  3. hdu 1042 N!(高精度乘法)

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

  4. Hdu 1042 N! (高精度数)

    Problem Description Givenan integer N(0 ≤ N ≤ 10000), your task is to calculate N! Input OneN in one ...

  5. hdu 1042 N! 高精度运算

    N!                                                                              Time Limit: 10000/50 ...

  6. 题目1076:N的阶乘(大数乘法)

    题目链接:http://ac.jobdu.com/problem.php?pid=1076 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...

  7. HDU 1042 大数阶乘

    B - 2 Time Limit:5000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  8. HDOJ-1042 N!(大数乘法)

    http://acm.hdu.edu.cn/showproblem.php?pid=1042 题意清晰..简单明了开门见山的大数乘法.. 10000的阶乘有35000多位 数组有36000够了 # i ...

  9. HDU 1042 N! 參考代码

    HDU 1042 N! 题意:给定整数N(0 ≤ N ≤ 10000), 求 N! (题目链接) #include <iostream> using namespace std; //每一 ...

  10. 51nod 1027大数乘法

    题目链接:51nod 1027大数乘法 直接模板了. #include<cstdio> #include<cstring> using namespace std; ; ; ; ...

随机推荐

  1. qt5-QPushButton按钮

    Win::Win(QWidget *parent) //构造函数体 : QWidget(parent) //执行父类初始化操作 { //创建按钮方式一 ,);//重置窗口大小 this->set ...

  2. std::setw(size)与std::setfill(char)

    头文件:#include <iostream>#include <iomanip>using namespace std; 功能:  std::setw :需要填充多少个字符, ...

  3. 【转】linux中fork()函数详解

    原文链接:http://blog.csdn.net/jason314/article/details/5640969#comments 总结:面宝P268 fork()的意思是进程从这里开始分叉,分成 ...

  4. spring cloud禁止输出日志:ConfigClusterResolver : Resolving eureka endpoints via configuration

    springcloud的注册中心客户端会每隔一定时间向注册中心服务端发送心跳,用此来判断注册中心服务端是否运行正常. 这样导致不断进行日志输出,不便查看正常的业务日志输出. c.n.d.s.r.aws ...

  5. head first 设计模式笔记3-装饰者模式:星巴兹饮料

    开放原则:类应该对扩展开放,对修改关闭. - 上篇博客中的观察者模式中,通过加入新的观察者,我们可以在任何时候扩展主题(Subject),而且不需向主题中添加代码. - 装饰者模式也完全遵循开放原则. ...

  6. LOJ #6145. 「2017 山东三轮集训 Day7」Easy 点分树+线段树

    这个就比较简单了~ Code: #include <cstdio> #include <algorithm> #define N 100004 #define inf 1000 ...

  7. BZOJ 2117: [2010国家集训队]Crash的旅游计划 动态点分治+二分

    感觉现在写点分治可快了~ 二分答案,就可以将求第 $k$ 大转换成一个判断问题,直接拿点分树判断一下就行了. #include <cstdio> #include <vector&g ...

  8. poj 2761 主席树的应用(查询区间第k小值)

    Feed the dogs Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 22084   Accepted: 7033 De ...

  9. codevs 1009 产生数x

                         题目描述 Description 给出一个整数 n(n<10^30) 和 k 个变换规则(k<=15). 规则: 一位数可变换成另一个一位数: 规 ...

  10. Zookeeper入门(六)之zkCli.sh对节点的增删改查

    参考地址为:https://www.cnblogs.com/sherrykid/p/5813148.html 1.连接 在 bin 目录下的  zkCli.sh  就是ZooKeeper客户端 ./z ...