fork(4) download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <iomanip>
  4.  
  5. using namespace std;
  6.  
  7. int main () {
  8.  
  9. /*
  10. cout << "請輸入主要屬性: ";
  11. double INT;
  12. cin >> INT;
  13. cout << "請輸入副要屬性: ";
  14. double LUK;
  15. cin >> LUK;
  16. cout << "請輸入爆擊機率: ";
  17. double CRI;
  18. cin >> CRI;
  19. cout << "請輸入最小爆傷: ";
  20. float MIN;
  21. cin >> MIN;
  22. cout << "請輸入最大爆傷: ";
  23. double MAX;
  24. cin >> MAX;
  25. cout << "請輸入無視防禦: ";
  26. double IGN;
  27. cin >> IGN;
  28. cout << "請輸入總傷加成: ";
  29. double DAM;
  30. cin >> DAM;
  31. cout << "請輸入王傷加成: ";
  32. double BOS;
  33. cin >> BOS;
  34. cout << "請輸入防禦係數: ";
  35. double DEF;
  36. cin >> DEF;
  37. cout << "請輸入極限點數: ";
  38. double HSP;
  39. cin >> HSP;*/
  40.  
  41. double INT=18000;
  42. double LUK=2000;
  43. double CRI=85;
  44. float MIN=70;
  45. double MAX=100;
  46. double IGN=97;
  47. double DAM=70;
  48. double BOS=280;
  49. double DEF=300;
  50. double HSP=430;
  51.  
  52. double MA[11][11];
  53. for (int i=0; i<=10; i++)
  54. for (int j=0; j<=10; j++)
  55. MA[i][j] = 1 + (4*15*i+15*j)/(4*INT+LUK);
  56.  
  57. double M_CRI[11];
  58. for (int i=0; i<=5; i++)
  59. M_CRI[i] = min ( 0.01*(CRI+i) , 1.0 );
  60. for (int i=6; i<=10; i++)
  61. M_CRI[i] = min ( 0.01*(CRI+5+2*(i-5)) , 1.0 );
  62.  
  63. double M_MIN[11];
  64. for (int i=0; i<=10; i++)
  65. M_MIN[i] = 1 + 0.01*MIN + 0.01*i;
  66.  
  67. double M_MAX[11];
  68. for (int i=0; i<=5; i++)
  69. M_MAX[i] = 1 + 0.01*MAX + 0.01*i;
  70. for (int i=6; i<=10; i++)
  71. M_MAX[i] = 1.05 + 0.01*MAX + 0.02 * (i-5);
  72.  
  73. double MB[11][11][11];
  74. for (int i=0; i<=10; i++)
  75. for (int j=0; j<=10; j++)
  76. for (int k=0; k<=10; k++)
  77. 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));
  78.  
  79. double MC[11];
  80. for (int i=0; i<=10; i++)
  81. MC[i] = (100-(1-0.01*IGN)*(1-0.03*i)*DEF)/(100-(1-0.01*IGN)*DEF);
  82.  
  83. double M_DAM[11];
  84. for (int i=0; i<=10; i++)
  85. M_DAM[i] = DAM + 3*i;
  86.  
  87. double M_BOS[11];
  88. for (int i=0; i<=5; i++)
  89. M_BOS[i] = BOS + 3*i;
  90. for (int i=6; i<=10; i++)
  91. M_BOS[i] = BOS + 15 + 4*(i-5);
  92.  
  93. double MD[11][11];
  94. for (int i=0; i<=10; i++)
  95. for (int j=0; j<=10; j++)
  96. MD[i][j] = (100+M_DAM[i]+M_BOS[j])/(100+DAM+BOS);
  97.  
  98. int cost=1000;
  99. int M_HSP[11] = {0,1,3,7,15,25,40,60,85,115,150};
  100. int I,J,K,L,M,N,O,P;
  101. double EFF = 1;
  102. for (int i=0; i<=10; i++)
  103. for (int j=0; j<=10; j++)
  104. for (int k=0; k<=10; k++)
  105. for (int l=0; l<=10; l++)
  106. for (int m=0; m<=10; m++)
  107. for (int n=0; n<=10; n++)
  108. for (int o=0; o<=10; o++)
  109. for (int p=0; p<=10; p++)
  110. 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)
  111. if (MA[i][j]*MB[k][l][m]*MC[n]*MD[o][p]==EFF) {
  112. 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){
  113. I = i;
  114. J = j;
  115. K = k;
  116. L = l;
  117. M = m;
  118. N = n;
  119. O = o;
  120. P = p;
  121. EFF =MA[i][j]*MB[k][l][m]*MC[n]*MD[o][p];
  122. 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];
  123. }
  124. }else if (MA[i][j]*MB[k][l][m]*MC[n]*MD[o][p]>EFF){
  125. I = i;
  126. J = j;
  127. K = k;
  128. L = l;
  129. M = m;
  130. N = n;
  131. O = o;
  132. P = p;
  133. EFF =MA[i][j]*MB[k][l][m]*MC[n]*MD[o][p];
  134. 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];
  135.  
  136. }
  137.  
  138. cout << endl << "請將主要屬性提升至 " << setw(2) << setfill('0') << I << " 等級";
  139. cout << endl << "請將副要屬性提升至 " << setw(2) << setfill('0') << J << " 等級";
  140. cout << endl << "請將爆擊機率提升至 " << setw(2) << setfill('0') << K << " 等級";
  141. cout << endl << "請將最小爆傷提升至 " << setw(2) << setfill('0') << L << " 等級";
  142. cout << endl << "請將最大爆傷提升至 " << setw(2) << setfill('0') << M << " 等級";
  143. cout << endl << "請將無視防禦提升至 " << setw(2) << setfill('0') << N << " 等級";
  144. cout << endl << "請將總傷加成提升至 " << setw(2) << setfill('0') << O << " 等級";
  145. cout << endl << "請將王傷加成提升至 " << setw(2) << setfill('0') << P << " 等級";
  146. cout << endl << "最佳效益為 " << EFF << " 倍";
  147.  
  148. int pause;
  149. cin >> pause;
  150. return 0;
  151. }
Success #stdin #stdout 2.07s 3420KB
stdin
stdout
請將主要屬性提升至 02 等級
請將副要屬性提升至 01 等級
請將爆擊機率提升至 10 等級
請將最小爆傷提升至 04 等級
請將最大爆傷提升至 07 等級
請將無視防禦提升至 05 等級
請將總傷加成提升至 07 等級
請將王傷加成提升至 09 等級
最佳效益為 1.26092 倍