zoukankan      html  css  js  c++  java
  • HDU 1042 N! 參考代码

    HDU 1042 N! 题意:给定整数N(0 ≤ N ≤ 10000), 求 N! (题目链接

    #include <iostream>
    using namespace std;
    
    //每一个数组元素存放5位数
    const int MAX=100000; //%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("%05d",a[i]); 
        }
    	
        printf("
    ");  
    }
    
    //以下的n为引用參数,即n为实參的别名
    //如此对<span style="font-family: Arial, Helvetica, sans-serif;">形參</span>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;
    }


  • 相关阅读:
    汇编实验四
    汇编实验三
    C语言常用标准库函数
    实验一
    NGUI的缓动
    unity之Hashtable ArrayList List
    有关Unity 的一些 笔记之
    有关Unity 的一些 笔记之场景
    有关Unity 的一些 笔记之prefab
    有关Unity 的一些 笔记之消息事件
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4222161.html
Copyright © 2011-2022 走看看