• 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;
    }
    



  • 相关阅读:
    UI 常用方法总结之--- UITableView
    UITextFiled 通知监听
    ios 本地通知
    AFNetworking 请求头的设置
    UI总结
    gitlab-server环境搭建
    redis 配置文件示例
    搭建spark集群
    kafka集群安装
    zookeeper集群搭建
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7151575.html
Copyright © 2020-2023  润新知