HDU1042(N!:设4为基数)

N!

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 74215    Accepted Submission(s): 21549

Problem 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.

Output

For each N, output N! in one line.

Sample Input

1

2

3

Sample Output

1

2

6

#include <iostream>
#include <iomanip>
#include <string.h>
using namespace std;
const int MAXN=10005;
const int BASE=100000;
const int LEN=5;//防止int溢出,最多基数最多设为5位
struct BigInt{
    int e[MAXN],len;
    BigInt()
    {
        memset(e,0,sizeof(e));
        len=0;
    }
    void set(int x)
    {
        while(x>0)
        {
            e[len++]=x%BASE;
            x/=BASE;
        }
    }
    BigInt operator*(const BigInt& b)
    {
        BigInt res;
        for(int i=0;i<len;i++)
        {
            int up=0;
            for(int j=0;j<b.len;j++)
            {
                int z=(e[i]*b.e[j]+res.e[i+j]+up);
                res.e[i+j]=z%BASE;
                up=z/BASE;
            }
            if(up!=0)    res.e[i+b.len]=up;
        }
        res.len=len+b.len;
        while(res.len>1&&res.e[res.len-1]==0)    res.len--;
        return res;
    }
    void print()
    {
        cout<<e[len-1];
        for(int i=len-2;i>=0;i--)
        {
            cout<<setw(LEN)<<setfill(‘0‘)<<e[i];//输出前导0;
        }
        cout<<endl;
    }
};
int main()
{
    int n;
    while(cin>>n)
    {
        BigInt res;
        res.set(1);
        for(int i=1;i<=n;i++)
        {
            BigInt a;
            a.set(i);
            res=res*a;
        }
        res.print();
    }
    return 0;
}
时间: 2024-08-17 14:28:13

HDU1042(N!:设4为基数)的相关文章

数字、基数及表示

数字.基数及表示 整数 整数是这些熟悉的数字 …, -1, 0, +1, +2, ….整数值也被称作是‘完整的’,并且分为正数(1到无穷大),负数(-1到负无穷大),零(0),非负数(零或正数)和少有的非正数(零或负数).正数和非负数间的差别通常非常重要,例如C语言典型地用非负数作为数组下标,明确地包括零. 基数 我们书写整数(和其它数字)时通常使用‘基数10’或‘十进制’算术.这是一种位置符号,每一个‘位置’的值比下一个大十倍.最后一个数字是一的个数,倒数第二个是10的个数,依此类推:因此数字

设为首页与加入收藏

通用代码: <a href="javascript:;"onclick="this.style.behavior='url(#default#homepage)';this.setHomePage(location.href);">设为首页</a> | <a href="javascript:;" onClick="window.external.AddFavorite(location.href,docu

超有创意的设计网站:http://www.tagxedo.com/,将字体设设计成图片

Tagxedo Home Create Shop Tweet Welcome to Tagxedo, word cloud with styles Tagxedo turns words -- famous speeches, news articles, slogans and themes, even your love letters -- into a visually stunning word cloud, words individually sized appropriately

activiti工作流的web流程设计器整合视频教程 SSM和独立部署

本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流程设计器和其它工作流项目分开部署的方式 2. 流程设计器和SSM框架项目整合在一起的方式 视频大小 1.13 GB ~[获取地址] QQ313596790 本视频均为本人亲自录的,另免费附加赠送Activiti工作流视频(企业开发实例讲解) (这个赠送的Activiti工作流视频里面的流程设计器用的

重设root 密码

通过单用户模式重设root账户的密码 通过"急救模式"重设root账户密码

软工课设第二天 6.28

day 2 日报内容: 姓名 王日 时间 2016年6月28日 小组会议内容 时间:11:00~11:20 地点:信东101 商定主要工作: (1)       将用户反馈意见统计合并,列出清单 今天系统完善部分: (2)游戏背景切换完善,渐变切换(杨子彤主要负责) (3)增加金币&道具部分,提高可玩性 (4)在助教的提议下,决定使用服务器 学习内容 由于选择java编程,所以有测试工具Junit可以使用. 我负责测试部分,所以需要学习一下 主要看了这两篇博客,还没开始动手实践 http://b

java 数据结构 图中使用的一些常用算法 图的存储结构 邻接矩阵:图的邻接矩阵存储方式是用两个数组来标示图。一个一位数组存储图顶点的信息,一个二维数组(称为邻接矩阵)存储图中边或者弧的信息。 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: 实例如下,左图是一个无向图。右图是邻接矩阵表示:

以下内容主要来自大话数据结构之中,部分内容参考互联网中其他前辈的博客. 图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通过表示为G(V,E),其中,G标示一个图,V是图G中顶点的集合,E是图G中边的集合. 无边图:若顶点Vi到Vj之间的边没有方向,则称这条边为无项边(Edge),用序偶对(Vi,Vj)标示. 对于下图无向图G1来说,G1=(V1, {E1}),其中顶点集合V1={A,B,C,D}:边集合E1={(A,B),(B,C),(C,D),(D,A),(A,C)}: 有向图:若

NULL 设下的陷阱

NULL表示unknown,不确定值,所以任何值(包括null值)和NULL值比较都是不可知的,在on子句,where子句,Merge或case的when子句中,任何值和null比较的结果都是false,这就是NULL设下的陷阱,我被坑过. 有一次,我使用Merge同步数据,由于target表中存在null值,虽然在source表中对null值做过处理,但是忽略了target表中的null值,导致数据merge失败. step1,创建示例数据 --create source table crea

Windows Phone 十二、设计器同步

在设计阶段为页面添加数据源 Blend或者VS的可视化设计器会跑我们的代码,然后来显示出来,当我们Build之后,设计器会进入页面的构造函数,调用InitializeComponent();方法来将UI渲染然后呈现给我们. DesignMode.DesignModeEnabled获取指示进程是否在设计模式下运行的值. d:DataContext="{d:DesignInstance Type=data:MainPageViewModel,IsDesignTimeCreatable=True}&q