fork download
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4.  
  5. int main() {
  6. int r;
  7. int cases;
  8. cin >> cases;
  9. while(cases > 0){
  10. int P, Q, R;
  11. cin >> r >> P >> Q;
  12. int DP[r + 2][r + 2] = {NULL};
  13. int x = -(r/2);
  14. int y = -(r/2);
  15. //cout << x << y << endl;
  16. DP[0][0] = 0;
  17.  
  18. for(int i = 1, j = 1, n = 0; i < r+2, j < r+2, n < r+2; i++, j++, n++){
  19. DP[i][0] = x + n;
  20. DP[0][j] = y + n;
  21. }
  22. //cout << DP[3][0] << " " << DP[0][3] <<endl;
  23.  
  24. for(int i = 1; i < r+2; i++){
  25. for(int j = 1; j < r+2; j++){
  26. DP[i][j] = (P * DP[i][0]) + (Q * DP[0][j]);
  27. }
  28. }
  29. /*for(int i = 0; i < r+2; i++){
  30.   for(int j = 0; j < r+2; j++){
  31.   cout << DP[i][j] << " ";
  32.   }
  33.   cout << endl;
  34.  }*/
  35. int min = r;
  36. for(int i = 0; i < r+2; i++){
  37. for(int j = 0; j < r+2; j++){
  38. if(DP[i][j] == r){
  39. // cout << DP[i][j] << endl;
  40. int a = abs(DP[i][0]) + abs(DP[0][j]);
  41. //cout << a << " " << DP[i][0] << " " << DP[0][i] << endl;
  42. if(a < min)
  43. min = a;
  44. }
  45. }
  46. }
  47. cout << min;
  48. if(cases > 1)
  49. cout << endl;
  50. cases --;
  51. }
  52. }
  53.  
Success #stdin #stdout 0s 4480KB
stdin
1
1 0 0
stdout
1