HDU 1042 N! 参考代码

请问DIY题目做不来的队员:听进去了吗?去消化吸收了吗?能百度一下吗?

请问集训队员:有兴趣吗?有团队合作精神吗?有责任感吗?能坚持吗?能自主学习吗?能承受挫败吗?

HDU 1042 N! 题意:Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! (题目链接

#include <iostream>
using namespace std;

//每个数组元素存放5位数
const int MAX=1000000; //%MAX后结果为[0,99999]
const int N=10001; //7132+1
int a[N]={0};

void prtBig(int n)
{
    for(int i=0; i<n;i++)
    {
        if(i==0) //最高位忽略前导0
            printf("%d",a[i]);
        else //非最高位按5位输出
            printf("%06d",a[i]);
    }

    printf("\n");
}

//下面的n为引用参数,即n为实参的别名
//如此对n的改变即是对形参的改变
void mul(int &n, int k)
{
    int c=0;
    //从最低位开始乘
    for (int i=n-1; i>=0; i--)
    {
		int t=a[i]*k+c;
		a[i]=t%MAX;
		c=t/MAX;
    }

    if (c>0)//最后的进位放在最前面
	{
		for(int j=n;j>0;j--) a[j]=a[j-1];//移位
		a[0]=c; //进位放在最高位
		n++; //n变化则形参也变
	}
}

bool run()
{
	int n;
    if(scanf("%d",&n)==EOF) return false;

    fill(a,a+N,0); //所有数组元素清0

	a[0]=1; //0,1的阶乘为1
	int m=1; //数组长度为1

    for(int i=2;i<=n;i++) //从2开始乘
    {
        mul(m, i);
    }
    prtBig(m);
    return true;
}

int main()
{
    while(run());
    return 0;
}
时间: 2024-10-27 11:41:00

HDU 1042 N! 参考代码的相关文章

hdu 1042 N!(大数阶乘,转化为100000这样的比较大的进制)

N! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 54172    Accepted Submission(s): 15365 Problem Description Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! Input One N in one

HDU 1042 大数阶乘

B - 2 Time Limit:5000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1042 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. Outpu

HDU Today(自己的代码不知道哪里错了一直没A抄袭大神的)

http://acm.hdu.edu.cn/showproblem.php?pid=2112 本题题目意思非常简单,麻烦的就是处理一下字符串,这是我能力欠缺的地方 #include<stdio.h>#include<iostream>#include<string.h>#define maxint 200000000int map[201][201],visit[201],n,m,s,e;int dis[202];char name[201][32];int find(

js页面跳转参考代码大全

整理一下JS页面跳转参考代码 第一种:     <script language=/"javascript/" type=/"text/javascript/"> window.location.href=/"login.jsp?backurl=/"+window.location.href; </script> 第二种:     <script language=/"javascript/"&g

大公司移动前端开发面试题——做转盘[参考代码]

题目在此 http://www.cnblogs.com/arfeizhang/p/turntable.html 这几天一直在忙,终于找到时间把参考代码放出来了.大家参考一下. 参考代码考虑到让入行不久的前端也看得懂,没有进行封装.变量名也没有进行简写,尽量一看就明白. 图片随手在网上截的,也许没有对准圆心.这段代码只考虑了webkit内核的浏览器,没做兼容.重在让大家弄懂原理. :P 如果感到有些卡帧,可能是转盘图片带来的效果.在调试器上试过,能维持50-60帧,流畅度还是让人满意的.在LG G

agsXMPP参考代码

agsXMPP 1.删除好友 XmppCon.RosterManager.RemoveRosterItem(node.RosterItem.Jid); 2.注销用户 void userConn_OnLogin(object sender) { FireShowMsg(string.Format("{0} Login", userConn.MyJID.User)); RegisterIq rIq = new RegisterIq(); rIq.Type = IqType.set; rIq

HTML参考代码之你懂得的基础小白

HTML参考代码 排序 功能 标签 描述 01.01.01 基础 <!--...--> 定义注释. 01.01.02 基础 <!DOCTYPE> 定义文档类型. 01.09.01 链接 <a> 定义锚. 01.03.01 格式 <abbr> 定义缩写. 01.03.02 格式 <acronym> 定义只取首字母的缩写. 01.03.03 格式 <address> 定义文档作者或拥有者的联系信息. 01.11.01 编程 <app

【spring-boot】spring-boot项目中,通过thymleaf实现登录功能,这里是一个登录拦截器的参考代码

我们在实现网页登录操作时,需要对网页进行保护(权限控制),将没有没有登录到请求拦截在系统之外,那么这里可以通过一个拦截器实现该功能 以下是LoginHanderInterceptor.java的参考代码: package com.springboot.conponent; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; i

C#NET字符编码加解密的参考代码

//C#NET字符编码加解密的参考代码我是从老外程序里面拷贝出来的希望对大家有所用 1 public string Encrypt(string name) { 2 byte ivId = GetIVId(name); 3 cipher.IV = GetIV(ivId); 4 var buf = Encoding.UTF8.GetBytes(name); 5 6 using (var ms = new MemoryStream()) { 7 ms.WriteByte(ivId); 8 using