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;
    }
  • 相关阅读:
    多西:一个创立了Twitter与Square的程序员
    越狱黑客Comex结束苹果实习生涯 将专注学校学习生活
    关于从页面中获取用户控件中的其它控件(如DropDownList)事件的方法
    如何更改VS2010的[默认开发语言]默认环境设置
    TRULY Understanding ViewState exactl
    .net平台下xml操作
    正则表达式学习2
    正则表达式学习3
    petshop 出现没有为 SQL 缓存通知启用数据库“MSPetShop4”
    利用ashx以XML返回的形式和ajax实现表格的异步填充
  • 原文地址:https://www.cnblogs.com/WWHHTT/p/10145314.html
Copyright © 2011-2022 走看看