• 杭电HDU_1042


    ps:刚才重打了这段代码,之前的有错

    #include <iostream>
    #include<cstdio>
    
    using namespace std;
    #define MAX 10000
    #define BASE 100000//基度可以选不同的值 ,eg:80000 
    int h[MAX];//10000大小的数组 
    
    
    int main()
    {
        int i,j,k,carry;
        int n;
    
        while(scanf("%d",&n)!=EOF)
        {
            memset(h,0,MAX*sizeof(int));
            h[0]=1;//第一个数标记为1,当输入为0,和1时,输出此值
            
    		for(i=2;i<=n;i++)
    		{
    			carry=0;//表示进位
    			//将阶乘存到数组中,如果是0,1,将会跳过这一步
    			 
    			for(k=0;k<MAX;k++)//遍历所开数组的每一个数进行进位以及数的保存
    			{
    				carry=carry+i*h[k];
    				h[k]=carry%BASE;//将该位未进位的数保存 
    				carry=carry/BASE;//将进位的数保存 
    			}
    		}
    			//打印数组 
    			for(j=MAX-1;j>=0;j--)
    			{
    				if(h[j]) 
    				{
    					break;
    				}
    			}
    			
    			printf("%d",h[j]);
    			
    			for(i=j-1;i>=0;i--)//当输入为0,1时,跳过此for循环
    			{
    				printf("%05d",h[i]);
    			}
    	printf("
    ");
    	
    	} 
    		 return 0;
    }
    

      

  • 相关阅读:
    uploadify上传文件代码
    事务处理拼接sql语句对数据库的操作.异常回滚
    Scrum【转】
    Redis
    mybatis
    Spring MVC
    IOC的理解(转载)
    spring IOC与AOP
    git
    python基础2
  • 原文地址:https://www.cnblogs.com/41412179guo/p/4457865.html
Copyright © 2020-2023  润新知