HDU 1042 N!(高精度阶乘、大数乘法)
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
Input
Output
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!(高精度阶乘、大数乘法)的更多相关文章
- 51nod1057-N的阶乘(大数乘法巧解)
这道大数乘法开始我是想套板子模拟的..然后就发现2/3的例子都wa了.(惊了).然后在思考后发现n2的板子的确过不了这么多的大数.(不看题的下场).所以,我在网上发现了分块求大数的方法.%%% 思路来 ...
- hdu 1042 N!(高精度乘法 + 缩进)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1042 题目大意:求n!, n 的上限是10000. 解题思路:高精度乘法 , 因为数据量比较大, 所以 ...
- hdu 1042 N!(高精度乘法)
Problem Description Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! Input One N in ...
- Hdu 1042 N! (高精度数)
Problem Description Givenan integer N(0 ≤ N ≤ 10000), your task is to calculate N! Input OneN in one ...
- hdu 1042 N! 高精度运算
N! Time Limit: 10000/50 ...
- 题目1076:N的阶乘(大数乘法)
题目链接:http://ac.jobdu.com/problem.php?pid=1076 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...
- HDU 1042 大数阶乘
B - 2 Time Limit:5000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- HDOJ-1042 N!(大数乘法)
http://acm.hdu.edu.cn/showproblem.php?pid=1042 题意清晰..简单明了开门见山的大数乘法.. 10000的阶乘有35000多位 数组有36000够了 # i ...
- HDU 1042 N! 參考代码
HDU 1042 N! 题意:给定整数N(0 ≤ N ≤ 10000), 求 N! (题目链接) #include <iostream> using namespace std; //每一 ...
- 51nod 1027大数乘法
题目链接:51nod 1027大数乘法 直接模板了. #include<cstdio> #include<cstring> using namespace std; ; ; ; ...
随机推荐
- qt5-QPushButton按钮
Win::Win(QWidget *parent) //构造函数体 : QWidget(parent) //执行父类初始化操作 { //创建按钮方式一 ,);//重置窗口大小 this->set ...
- std::setw(size)与std::setfill(char)
头文件:#include <iostream>#include <iomanip>using namespace std; 功能: std::setw :需要填充多少个字符, ...
- 【转】linux中fork()函数详解
原文链接:http://blog.csdn.net/jason314/article/details/5640969#comments 总结:面宝P268 fork()的意思是进程从这里开始分叉,分成 ...
- spring cloud禁止输出日志:ConfigClusterResolver : Resolving eureka endpoints via configuration
springcloud的注册中心客户端会每隔一定时间向注册中心服务端发送心跳,用此来判断注册中心服务端是否运行正常. 这样导致不断进行日志输出,不便查看正常的业务日志输出. c.n.d.s.r.aws ...
- head first 设计模式笔记3-装饰者模式:星巴兹饮料
开放原则:类应该对扩展开放,对修改关闭. - 上篇博客中的观察者模式中,通过加入新的观察者,我们可以在任何时候扩展主题(Subject),而且不需向主题中添加代码. - 装饰者模式也完全遵循开放原则. ...
- LOJ #6145. 「2017 山东三轮集训 Day7」Easy 点分树+线段树
这个就比较简单了~ Code: #include <cstdio> #include <algorithm> #define N 100004 #define inf 1000 ...
- BZOJ 2117: [2010国家集训队]Crash的旅游计划 动态点分治+二分
感觉现在写点分治可快了~ 二分答案,就可以将求第 $k$ 大转换成一个判断问题,直接拿点分树判断一下就行了. #include <cstdio> #include <vector&g ...
- poj 2761 主席树的应用(查询区间第k小值)
Feed the dogs Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 22084 Accepted: 7033 De ...
- codevs 1009 产生数x
题目描述 Description 给出一个整数 n(n<10^30) 和 k 个变换规则(k<=15). 规则: 一位数可变换成另一个一位数: 规 ...
- Zookeeper入门(六)之zkCli.sh对节点的增删改查
参考地址为:https://www.cnblogs.com/sherrykid/p/5813148.html 1.连接 在 bin 目录下的 zkCli.sh 就是ZooKeeper客户端 ./z ...