zoukankan      html  css  js  c++  java
  • 计算圆周率

    #include<iostream>
    #include<ctime>
    #include<algorithm>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    inline int rd(){
        int x=0,f=1;
        char ch=getchar();
        for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1;
        for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';
        return x*f;
    }
    int main(){
        srand(time(0));
        system("color 9F");
        unsigned long long cnt1=0,cnt2=0;
        unsigned long long n=rd();
        if(n==0){
            while(1){
                for(int i=1;i<=1000000;i++){
                    long double x=(long double)((long double)rand()/(long double)(RAND_MAX));
                    long double y=(long double)((long double)rand()/(long double)(RAND_MAX));
                    long double z=(long double)(sqrt((long double)(x*x+y*y)));
                    if(z<(long double)(1.0)) cnt1++;
                    else if(z>(long double)(1.0)) cnt2++;
                }
                long double ans=(((long double)(cnt1+0.0))/((long double)(cnt1+cnt2+0.0))*(long double)(4.0));
                printf("当前π的值为:%.10Lf",ans);puts("");
            }
        }
        else{
            for(int i=1;i<=n;i++){
                long double x=(long double)((long double)rand()/(long double)(RAND_MAX));
                long double y=(long double)((long double)rand()/(long double)(RAND_MAX));
                long double z=(long double)(sqrt((long double)(x*x+y*y)));
                if(z<(long double)(1.0)) cnt1++;
                else if(z>(long double)(1.0)) cnt2++;
            }
            long double ans=(((long double)(cnt1+0.0))/((long double)(cnt1+cnt2+0.0))*(long double)(4.0));
            printf("%.10Lf",ans);
        }
        return 0;
    }

     升级版:

    #include<iostream>
    #include<ctime>
    #include<algorithm>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    inline int rd(){
        int x=0,f=1;
        char ch=getchar();
        for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1;
        for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';
        return x*f;
    }
    int main(){
        srand(time(0));
        system("color 9F");
        unsigned long long cnt1=0,cnt2=0;
        unsigned long long n=rd();
        unsigned long long cnt3=0;
        long double s=0;
        if(n==-1){
            while(1){
                cnt3++;
                cnt1=0,cnt2=0;
                for(int i=1;i<=1000000;i++){
                    long double x=(long double)((long double)rand()/(long double)(RAND_MAX));
                    long double y=(long double)((long double)rand()/(long double)(RAND_MAX));
                    long double z=(long double)(sqrt((long double)(x*x+y*y)));
                    if(z<=(long double)(1.0)) cnt1++;
                    else if(z>(long double)(1.0)) cnt2++;
                }
                long double ans=(((long double)(cnt1+0.0))/((long double)(cnt1+cnt2+0.0))*(long double)(4.0));
                s+=ans;
                printf("\(^-^)/ 当前π的值为:%.10Lf",s/(long double)(cnt3+0.0));puts("");
            }
        }
        else if(n==0){
            while(1){
                for(int i=1;i<=1000000;i++){
                    long double x=(long double)((long double)rand()/(long double)(RAND_MAX));
                    long double y=(long double)((long double)rand()/(long double)(RAND_MAX));
                    long double z=(long double)(sqrt((long double)(x*x+y*y)));
                    if(z<=(long double)(1.0)) cnt1++;
                    else if(z>(long double)(1.0)) cnt2++;
                }
                cnt2-=22;
                long double ans=(((long double)(cnt1+0.0))/((long double)(cnt1+cnt2+0.0))*(long double)(4.0));
                printf("\(^-^)/ 当前π的值为:%.10Lf",ans);puts("");
            }
        }
        else{
            for(int i=1;i<=n;i++){
                long double x=(long double)((long double)rand()/(long double)(RAND_MAX));
                long double y=(long double)((long double)rand()/(long double)(RAND_MAX));
                long double z=(long double)(sqrt((long double)(x*x+y*y)));
                if(z<(long double)(1.0)) cnt1++;
                else if(z>(long double)(1.0)) cnt2++;
            }
            long double ans=(((long double)(cnt1+0.0))/((long double)(cnt1+cnt2+0.0))*(long double)(4.0));
            printf("%.10Lf",ans);
        }
        system("pause"); 
        return 0;
    }
  • 相关阅读:
    初学:利用mybatis-generator自动生成代码
    数组求和forEach方法
    Node.js热部署代码,实现修改代码后自动重启服务方便实时调试
    nodejs中文乱码问题
    简单说一下SS的原理
    Spring Cloud Eureka 3 (Eureka client注册服务提供者)
    Spring Cloud Eureka 2 (Eureka Server搭建服务注册中心)
    Spring Cloud Eureka 1(eureka简介)
    eclipse中创建多模块maven web项目
    eclipse中创建maven web项目
  • 原文地址:https://www.cnblogs.com/WWHHTT/p/10145314.html
Copyright © 2011-2022 走看看