hdu 1042 N!(大数)
题意:求n!(0 ≤ N ≤ 10000)
思路:大数,用数组存储
1.首先要考虑数据N!的位数,因为最大是10000!,可以计算一下大概是5+9000*4+900*3+90*2+10*1=38865位,(此处没看懂,怎么求的)
可以开一个40000的int数组存放,然后用常规的方法去计算
2.但是需要改进一下,咱们知道int数组一个只存1位太浪费了,不如让它的空间发挥到极限,数组一个元素存一个不超过10^5的数,
为什么是10^5呢?见代码中的注释,改进后就一个元素存5位,这样开的数组就可以小5倍了,只需要8000就可以了
代码1:
#include<cstdio>
#include<cstring>const int N=40000;
int main(){int ans[N];int n,i,j,co,sum;while(~scanf("%d",&n)){memset(ans,0,sizeof(ans));ans[0]=1;for(i=2;i<=n;i++){for(j=0,co=0;j<N;j++){//求阶乘sum=ans[j]*i+co;//ans[j]=sum%10;co=sum/10;}}for(i=N-1;ans[i]==0;i--);printf("%d",ans[i]);for(i--;i>=0;i--) printf("%d",ans[i]);printf("\n");}return 0;
}
代码2:
#include<cstdio>
#include<cstring>const int N=8000;
int main(){int ans[N];int n,i,j,co,sum;while(~scanf("%d",&n)){memset(ans,0,sizeof(ans));ans[0]=1;for(i=2;i<=n;i++){for(j=0,co=0;j<N;j++){//求阶乘sum=ans[j]*i+co;//这里的sum决定了10^5,因为ans[j]<10^5,i<10^4,co<10^5,那么sum不会超出int范围;如果用10^6,则sum可能溢出。ans[j]=sum%100000;co=sum/100000;}}for(i=N-1;ans[i]==0;i--);printf("%d",ans[i]);for(i--;i>=0;i--) printf("%05d",ans[i]);printf("\n");}return 0;
}
转载于:https://www.cnblogs.com/bofengyu/p/4477368.html
hdu 1042 N!(大数)相关推荐
- HDU 1042 N!(大数阶乘)
本题看着为大数的模板题目,挺简单的. 下面是模仿某位大神的代码 #include<stdio.h> void main() {int i,j,m,n;while(scanf("% ...
- HDU 1042 N!(高精度阶乘、大数乘法)
N! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Subm ...
- *【HDU - 1042 】 N! (大数乘法)
题干: Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! Input One N in one line, process ...
- 斐波那契数列大数的压位c语言,HDU 1568 Fibonacci(大数前4位)
分析:x=1234567.求其前四位数: log10(x)=log10(1.234567)+6. 所以1.234567=10^(log10(x)-6). 1234 =(int) 10^(log10(x ...
- 多校第六场 HDU 4927 JAVA大数类+模拟
HDU 4927 题目大意:给定一个长度为n的序列a,每次生成一个新的序列,长度为n-1,新序列b中bi=ai+1−ai,直到序列长度为1.输出最后的数. 思路:这题实在是太晕了,比赛的时候搞了四个小 ...
- HDU 1042 N!
典型的大数问题. 分析来自:http://www.cnblogs.com/Su-Blog/archive/2012/08/27/2659172.html 高精度问题:大整数乘法的应用 其核心思想就是把 ...
- N! hdu 1042
N! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Subm ...
- hdu 1042 N! 高精度运算
N! Time Limit: 10000/50 ...
- HDU 1042 N!(高精度计算阶乘)
N! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...
最新文章
- SQL Server中灾难时备份结尾日志(Tail of log)的两种方法
- php v9 ajax 翻页,phpcms v9建站 ajax列表分页加载更多word文档教程
- pycharm如何修改背景成护眼色和字体大小
- Lua string库整理
- 如何免费申请用于开发目的的Hybris Commerce license
- arm 架构_ARM推出性能更强A78C架构,服务笔记本产品
- jpushinterface.setalias的几个参数都是啥意思_很多电工老师傅都不知道,低压断路器基本参数,你懂几个?...
- mac mysql配置jdk_mac开发环境搭建
- iVIEW: An Intelligent Video over InternEt and Wireless Access System
- matlab中如何创建使用构架数组?
- 5个冷门的MacOS快捷键,小众但好用
- Arduino 函数-IO输出输入
- JAVA实现网页版斗地主_通过Java实现斗地主
- Android学习(二):Android Studio创建并运行Android项目(Hello World ~.~)
- IOS calculater
- 课设-基于51单片机+超声波模块的避障小车(源码+原理图+Protel仿真)
- vision安装过程中出错_NVIDIA安装程序失败 3D vision 驱动程序 失败 是为什么,如图所示...
- 【转租】【房东直租】【次渠东里一区、高层正规两居室、次卧】
- 无卡支付系统(德齐互联)
- iterate java_ibatis中iterate的用法(conjunction=or ,)
热门文章
- python中mainloop什么意思_很难理解python中的Tkinter mainloop()
- 【vcenter】redhat虚拟机时间莫名异常
- mysql5.7设置SQL Mode
- 【ORACLE SQL 语言】SQL语言四大类
- RedHat7.0 设置weblogic开机自启动
- 评估微型计算机的主要指标,微型计算机的工作过程和主要性能指标.doc
- c# mysql 文件存储_c# 如何实现保存文件到数据库
- java hashmap value_Java HashMap values() 方法
- android加载圈,SwipeRefreshLayout加载圈不会隐藏在android中
- 织梦Cms怎么一直服务器维护中,织梦cms文档关键词维护中频率详解