------ 文章開始 ------

/*
Unlight     因果之幻攻擊預測
*/
#include <cstdarg>
#include <iostream>
using namespace std;
double pas(int,int);//巴斯卡三角形
double power3(int);//計算2的n次方
double t(double,int,int,int);//計算結果
double power2(int);
int main (void)
{
    int a,d,hp,i,j;
    char again;
    double a2,d2,c,lethal,cans,temp;
    cout<<"Unlight Jead damage predict"<<endl;
    cout<<"Developer: Darthvader"<<endl;
    do{
        cout<<"please input attack value: ";
        cin>>a;
        cout<<"please input defense value: ";
        cin>>d;
        cout<<"please input critical value(EX:0.05): ";
        cin>>c;
        cout<<"please input HP value: ";
        cin>>hp;
        a2=power3(a);
        d2=power3(d);
        double as[a],ds[d],ans[a+1],ans2[a+1];
        for(i=0;i<=a;i++) as[i]=t(a2,a,i,a-i);
        for(i=0;i<=d;i++) ds[i]=t(d2,d,i,d-i);
        for(i=1;i<=a;i++) ans[i]=0,ans2[i]=0;
        ans[0]=1;
        for(i=a;i>0;i--)
        {
            for(j=0;((i+j)<=a)&&(j<=d);j++)ans[i]+=as[i+j]*ds[j];
            ans[0]-=ans[i];
        }
        for(i=0;i<=a;i++)
        {
            for(j=0,temp=0;j<i;j++) {temp=ans[j]+temp;cout<<temp<<endl;}
            ans2[i]=ans[i]*ans[i]+2*ans[i]*temp;
        }
        for(i=0;i<=a;i++)
        cout<<"v: "<<i<<"\t"<<"p: "<<ans2[i]<<endl;
        cout<<"v=value,p=possibility"<<endl;
        for(cans=0,i=a;cans<c;i--) cans+=ans2[i];
        cout<<"damage value is in: "<<i+1<<endl;
        for(i=0,lethal=0;i<hp;i++) lethal+=ans2[i];
        cout<<"lethal possibility is: "<<1-lethal<<endl;
        cout<<"do again?(y/n)";
        cin>>again;
    }
    while((again!='n')&(again!='N'));
    return 0;
}
double pas(int n,int p)
{
    double ans=1;
    int i;
    if((n-p)>p) p=n-p;//計算出較大的值
    for(i=n;i>p;i--)ans*=i;//算出最小的乘數
    for(i=(n-p);i>0;i--)ans/=i;//算出需要除掉的數
    return ans;
}
double power3(int a)
{
    if(a>0) return power3(a-1)*3;
    else return 1;
}
double t(double a,int b,int c, int d)
{
    return pas(b,c)/a*power2(d);
}
double power2(int d)
{
    if(d>0) return power2(d-1)*2;
    else return 1;
}


------ 文章結尾 ------

[複製網址] [開新視窗] [加到我的最愛] [檢舉短網址] [QR條碼]



服務條款 - 完全手冊 - 加入會員(免費) - 聯絡偶們 -

© PPT.cc