hdu1042 (模拟n!)
题目大意: 求 n。(可能会超过整数范围,这里用数组模拟n!的值)
pid=1042">http://acm.hdu.edu.cn/showproblem.php?pid=1042
AC代码:
/**
*数组模拟n! ,循环太多可能超时,
*/
#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
int a[40001];
int main()
{
int n;
while(cin>>n){
memset(a,0,sizeof(a));
a[0]=1;
//cout<<a[10000]<<endl;
int flag=0;
for(int j=2;j<=n;j++){
for(int i=0;i<=40000;i++){
int sum=j*a[i]+flag;
flag=sum/10;
a[i]=sum%10;
}
}
int i;
for(i=40000;!a[i];i--);
// cout<<i<<endl;
for(int j=i;j>=0;j--){
cout<<a[j];
}
cout<<endl;
}
return 0;
}
改进版模拟n!
/**
*相似于hdu1024数组模拟n!
*/
#include<iostream>
#include<cstdio>
#include<string.h>
#define MOD 10000
using namespace std;
int a[10001];
int main()
{
int n;
while(cin>>n){
memset(a,0,sizeof(int)*1500);
a[0]=1;
int num=1;
//cout<<a[10000]<<endl;
for(int j=2;j<=n;j++){
int flag=0;
for(int i=0;i<num;i++){
int sum=j*a[i]+flag;
a[i]=sum%MOD;
flag=sum/MOD;
//printf("%d\n",a[i]); }
if(flag>0) a[num++]=flag;
}
--num;
printf("%d",a[num--]);
for(;num>=0;num--){
printf("%04d",a[num]);
}
// cout<<i<<endl; printf("\n");
}
return 0;
}
hdu1042 (模拟n!)的更多相关文章
- HDU-1042.N!(大数与小数相乘的乘法模拟)
本题大意:给定一个10000以内的整数n,让你求出n!并输出. 本题思路:先初始化一个存放答案的数组ans,初始ans[0] = 1,并初始化其剩下的元素为0,接着就从2开始依次与ans数组内的每一个 ...
- HDU1042(N!)题解
HDU1042(N!)题解 以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 计算N的阶乘并输出. [题目分析] 题给范围上限是10000,那么毫无疑问是大数题.之前我整理过各种 ...
- App开发:模拟服务器数据接口 - MockApi
为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- Python 爬虫模拟登陆知乎
在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...
- HTML 事件(四) 模拟事件操作
本篇主要介绍HTML DOM中事件的模拟操作. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4. ...
- 模拟AngularJS之依赖注入
一.概述 AngularJS有一经典之处就是依赖注入,对于什么是依赖注入,熟悉spring的同学应该都非常了解了,但,对于前端而言,还是比较新颖的. 依赖注入,简而言之,就是解除硬编码,达到解偶的目的 ...
- webapp应用--模拟电子书翻页效果
前言: 现在移动互联网发展火热,手机上网的用户越来越多,甚至大有超过pc访问的趋势.所以,用web程序做出仿原生效果的移动应用,也变得越来越流行了.这种程序也就是我们常说的单页应用程序,它也有一个英文 ...
- javascript动画系列第一篇——模拟拖拽
× 目录 [1]原理介绍 [2]代码实现 [3]代码优化[4]拖拽冲突[5]IE兼容 前面的话 从本文开始,介绍javascript动画系列.javascript本身是具有原生拖放功能的,但是由于兼容 ...
随机推荐
- Python基础2 列表 元祖 字符串 字典 集合 文件操作 -DAY2
本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...
- JavaSE-28 hashCode()方法、equals()方法和==相关概念
概述 Java中,Object类是所有类的基类:如果一个类没有明确继承其他已定义的类,则默认继承Object类. Object类提供了以下方法,对于其他方法,请参考前期专题描述. hashCode() ...
- [SNOI2019]数论
题目 考虑对于每一个\(a_i\)计算有多少个\(0<x\leq T-1\)满足\(x\equiv a_i(mod\ P)\)且\(x\ mod\ Q \in B\) 显然\(x=a_i+k\t ...
- 教你学会Linux/Unix下的vi文本编辑器
vi编辑器是Unix/Linux系统管理员必须学会使用的编辑器.看了不少关于vi的资料,终于得到这个总结. 首先,记住vi编辑器的两个模式:1.命令模式 2.编辑模式. 在一个UNIX/Linux的s ...
- Android典型界面设计-访网易新闻实现双导航tab切换
一.问题描述 双导航tab切换(底部区块+区域内头部导航),实现方案底部区域使用FragmentTabHost+Fragment, 区域内头部导航使用ViewPager+Fragment,可在之前博客 ...
- JS 手机号中间4位变星号
一:正则方法 var str1 = '13991367972'var reg = /^(\d{3})\d*(\d{4})$/;var str2 = str1.replace(reg,'$1****$2 ...
- [HIHO] 1048 铺地板
历经千辛万苦,小Hi和小Ho终于到达了举办美食节的城市!虽然人山人海,但小Hi和小Ho仍然抑制不住兴奋之情,他们放下行李便投入到了美食节的活动当中.美食节的各个摊位上各自有着非常多的有意思的小游戏,其 ...
- Linux用户和组的概念
目 录 第1章 用户和组存在的关系 1 1.1 我们现在所使用的操作系统都是多用户操作系统 1 1.2 id命令查看当前登陆的用户信息 1 1.3 用户UID的分类 1 1.4 ...
- 第二章:C++简单程序设计
主要内容: 1.C++语言概述 2.基本数据类型和表达式 3.数据的输入与输出 4.算法的基本控制结构 5.自定义数据类型 1.数据类型default is double 2.自定义数据类型就是bui ...
- LeetCode01--寻找两个有序数组的中位数
''' 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nu ...