题意:求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!(大数)相关推荐

  1. HDU 1042 N!(大数阶乘)

    本题看着为大数的模板题目,挺简单的. 下面是模仿某位大神的代码 #include<stdio.h> void main() {int i,j,m,n;while(scanf("% ...

  2. HDU 1042 N!(高精度阶乘、大数乘法)

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

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

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

  4. 斐波那契数列大数的压位c语言,HDU 1568 Fibonacci(大数前4位)

    分析:x=1234567.求其前四位数: log10(x)=log10(1.234567)+6. 所以1.234567=10^(log10(x)-6). 1234 =(int) 10^(log10(x ...

  5. 多校第六场 HDU 4927 JAVA大数类+模拟

    HDU 4927 题目大意:给定一个长度为n的序列a,每次生成一个新的序列,长度为n-1,新序列b中bi=ai+1−ai,直到序列长度为1.输出最后的数. 思路:这题实在是太晕了,比赛的时候搞了四个小 ...

  6. HDU 1042 N!

    典型的大数问题. 分析来自:http://www.cnblogs.com/Su-Blog/archive/2012/08/27/2659172.html 高精度问题:大整数乘法的应用 其核心思想就是把 ...

  7. N! hdu 1042

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

  8. hdu 1042 N! 高精度运算

    N!                                                                              Time Limit: 10000/50 ...

  9. HDU 1042 N!(高精度计算阶乘)

    N! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

最新文章

  1. SQL Server中灾难时备份结尾日志(Tail of log)的两种方法
  2. php v9 ajax 翻页,phpcms v9建站 ajax列表分页加载更多word文档教程
  3. pycharm如何修改背景成护眼色和字体大小
  4. Lua string库整理
  5. 如何免费申请用于开发目的的Hybris Commerce license
  6. arm 架构_ARM推出性能更强A78C架构,服务笔记本产品
  7. jpushinterface.setalias的几个参数都是啥意思_很多电工老师傅都不知道,低压断路器基本参数,你懂几个?...
  8. mac mysql配置jdk_mac开发环境搭建
  9. iVIEW: An Intelligent Video over InternEt and Wireless Access System
  10. matlab中如何创建使用构架数组?
  11. 5个冷门的MacOS快捷键,小众但好用
  12. Arduino 函数-IO输出输入
  13. JAVA实现网页版斗地主_通过Java实现斗地主
  14. Android学习(二):Android Studio创建并运行Android项目(Hello World ~.~)
  15. IOS calculater
  16. 课设-基于51单片机+超声波模块的避障小车(源码+原理图+Protel仿真)
  17. vision安装过程中出错_NVIDIA安装程序失败 3D vision 驱动程序 失败 是为什么,如图所示...
  18. 【转租】【房东直租】【次渠东里一区、高层正规两居室、次卧】
  19. 无卡支付系统(德齐互联)
  20. iterate java_ibatis中iterate的用法(conjunction=or ,)

热门文章

  1. python中mainloop什么意思_很难理解python中的Tkinter mainloop()
  2. 【vcenter】redhat虚拟机时间莫名异常
  3. mysql5.7设置SQL Mode
  4. 【ORACLE SQL 语言】SQL语言四大类
  5. RedHat7.0 设置weblogic开机自启动
  6. 评估微型计算机的主要指标,微型计算机的工作过程和主要性能指标.doc
  7. c# mysql 文件存储_c# 如何实现保存文件到数据库
  8. java hashmap value_Java HashMap values() 方法
  9. android加载圈,SwipeRefreshLayout加载圈不会隐藏在android中
  10. 织梦Cms怎么一直服务器维护中,织梦cms文档关键词维护中频率详解