#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
int main () {
/*
cout << "請輸入主要屬性: ";
double INT;
cin >> INT;
cout << "請輸入副要屬性: ";
double LUK;
cin >> LUK;
cout << "請輸入爆擊機率: ";
double CRI;
cin >> CRI;
cout << "請輸入最小爆傷: ";
float MIN;
cin >> MIN;
cout << "請輸入最大爆傷: ";
double MAX;
cin >> MAX;
cout << "請輸入無視防禦: ";
double IGN;
cin >> IGN;
cout << "請輸入總傷加成: ";
double DAM;
cin >> DAM;
cout << "請輸入王傷加成: ";
double BOS;
cin >> BOS;
cout << "請輸入防禦係數: ";
double DEF;
cin >> DEF;
cout << "請輸入極限點數: ";
double HSP;
cin >> HSP;*/
double INT=18000;
double LUK=2000;
double CRI=85;
float MIN=70;
double MAX=100;
double IGN=97;
double DAM=70;
double BOS=280;
double DEF=300;
double HSP=430;
double MA[11][11];
for (int i=0; i<=10; i++)
for (int j=0; j<=10; j++)
MA[i][j] = 1 + (4*15*i+15*j)/(4*INT+LUK);
double M_CRI[11];
for (int i=0; i<=5; i++)
M_CRI[i] = min ( 0.01*(CRI+i) , 1.0 );
for (int i=6; i<=10; i++)
M_CRI[i] = min ( 0.01*(CRI+5+2*(i-5)) , 1.0 );
double M_MIN[11];
for (int i=0; i<=10; i++)
M_MIN[i] = 1 + 0.01*MIN + 0.01*i;
double M_MAX[11];
for (int i=0; i<=5; i++)
M_MAX[i] = 1 + 0.01*MAX + 0.01*i;
for (int i=6; i<=10; i++)
M_MAX[i] = 1.05 + 0.01*MAX + 0.02 * (i-5);
double MB[11][11][11];
for (int i=0; i<=10; i++)
for (int j=0; j<=10; j++)
for (int k=0; k<=10; k++)
MB[i][j][k] = (M_CRI[i]*0.5*(M_MIN[j]+M_MAX[k])+(1-M_CRI[i]))/(0.01*CRI*(1+0.005*MIN+0.005*MAX)+(1-0.01*CRI));
double MC[11];
for (int i=0; i<=10; i++)
MC[i] = (100-(1-0.01*IGN)*(1-0.03*i)*DEF)/(100-(1-0.01*IGN)*DEF);
double M_DAM[11];
for (int i=0; i<=10; i++)
M_DAM[i] = DAM + 3*i;
double M_BOS[11];
for (int i=0; i<=5; i++)
M_BOS[i] = BOS + 3*i;
for (int i=6; i<=10; i++)
M_BOS[i] = BOS + 15 + 4*(i-5);
double MD[11][11];
for (int i=0; i<=10; i++)
for (int j=0; j<=10; j++)
MD[i][j] = (100+M_DAM[i]+M_BOS[j])/(100+DAM+BOS);
int cost=1000;
int M_HSP[11] = {0,1,3,7,15,25,40,60,85,115,150};
int I,J,K,L,M,N,O,P;
double EFF = 1;
for (int i=0; i<=10; i++)
for (int j=0; j<=10; j++)
for (int k=0; k<=10; k++)
for (int l=0; l<=10; l++)
for (int m=0; m<=10; m++)
for (int n=0; n<=10; n++)
for (int o=0; o<=10; o++)
for (int p=0; p<=10; p++)
if (M_HSP[i]+M_HSP[j]+M_HSP[k]+M_HSP[l]+M_HSP[m]+M_HSP[n]+M_HSP[o]+M_HSP[p]<=HSP)
if (MA[i][j]*MB[k][l][m]*MC[n]*MD[o][p]==EFF) {
if (M_HSP[i]+M_HSP[j]+M_HSP[k]+M_HSP[l]+M_HSP[m]+M_HSP[n]+M_HSP[o]+M_HSP[p]<cost){
I = i;
J = j;
K = k;
L = l;
M = m;
N = n;
O = o;
P = p;
EFF =MA[i][j]*MB[k][l][m]*MC[n]*MD[o][p];
cost=M_HSP[i]+M_HSP[j]+M_HSP[k]+M_HSP[l]+M_HSP[m]+M_HSP[n]+M_HSP[o]+M_HSP[p];
}
}else if (MA[i][j]*MB[k][l][m]*MC[n]*MD[o][p]>EFF){
I = i;
J = j;
K = k;
L = l;
M = m;
N = n;
O = o;
P = p;
EFF =MA[i][j]*MB[k][l][m]*MC[n]*MD[o][p];
cost=M_HSP[i]+M_HSP[j]+M_HSP[k]+M_HSP[l]+M_HSP[m]+M_HSP[n]+M_HSP[o]+M_HSP[p];
}
cout << endl << "請將主要屬性提升至 " << setw(2) << setfill('0') << I << " 等級";
cout << endl << "請將副要屬性提升至 " << setw(2) << setfill('0') << J << " 等級";
cout << endl << "請將爆擊機率提升至 " << setw(2) << setfill('0') << K << " 等級";
cout << endl << "請將最小爆傷提升至 " << setw(2) << setfill('0') << L << " 等級";
cout << endl << "請將最大爆傷提升至 " << setw(2) << setfill('0') << M << " 等級";
cout << endl << "請將無視防禦提升至 " << setw(2) << setfill('0') << N << " 等級";
cout << endl << "請將總傷加成提升至 " << setw(2) << setfill('0') << O << " 等級";
cout << endl << "請將王傷加成提升至 " << setw(2) << setfill('0') << P << " 等級";
cout << endl << "最佳效益為 " << EFF << " 倍";
int pause;
cin >> pause;
return 0;
}