• hdu1042 (模拟n!)


    题目大意: 求 n。(可能会超过整数范围,这里用数组模拟n!的值)

    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
    ",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("
    ");
        }
        return 0;
    }
    



  • 相关阅读:
    在HTML文件中加载js
    HTML表单的问题
    HTML自动换行的问题
    HTML的结束标签问题
    数据库基本知识
    PHP中数据库的连接
    2014年7月
    3.2版本视频讲解知识点
    2014年7月
    选项卡
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7151575.html
Copyright © 2020-2023  润新知