fork download
  1. /* add your value() based on this code */
  2. #include <stdio.h>
  3.  
  4. int value(int type, int width, int height, int length) {
  5. int unit;
  6. switch (type) {
  7. case 79:
  8. unit = 30;
  9. break;
  10. case 47:
  11. unit = 10;
  12. break;
  13. case 29:
  14. unit = 4;
  15. break;
  16. case 82:
  17. unit = 5;
  18. break;
  19. case 26:
  20. unit = 3;
  21. break;
  22. case 22:
  23. unit = 9;
  24. break;
  25. default:
  26. return -1;
  27. break;
  28. }
  29.  
  30. if (width <= 0 || height <= 0 || length <= 0)
  31. return -2;
  32.  
  33. int min = (width < height)? width : height;
  34. int temp1 = (width > height)? width : height;
  35. int temp2 = (min > length)? min : length;
  36. min = (min < length)? min : length;
  37. int volume = min * min * min;
  38. int val = volume * volume * (temp1 / min) * (temp2 / min) * unit;
  39. printf("min: %d, temp1: %d, temp2: %d, volume: %d, val: %d\n", min, temp1, temp2, volume, val);
  40.  
  41. if ((temp1 % min) == 0 && (temp2 % min) == 0) {
  42. return val;
  43. } else if ((temp2 % min) == 0) {
  44. val = val + value(type, (temp1 % min), temp2, min);
  45. } else if ((temp1 % min) == 0) {
  46. val = val + value(type, (temp2 % min), temp1, min);
  47. } else if ((temp1 % min) > (temp2 % min)) {
  48. val = val + value(type, (temp1 % min), temp2, min) + value(type, (temp2 % min), (temp1-(temp1 % min)), min);
  49. } else if ((temp2 % min) > (temp1 % min)) {
  50. val = val + value(type, (temp2 % min), temp1, min) + value(type, (temp1 % min), (temp2-(temp2 % min)), min);
  51. }
  52.  
  53. }
  54.  
  55. int main () {
  56. int type, width, height, length;
  57. scanf ( "%d%d%d%d", &type, &width, &height, &length );
  58. printf ( "%d", value ( type, width, height, length ) );
  59. return 0;
  60. }
Success #stdin #stdout 0.01s 5276KB
stdin
82 14 35 91
stdout
min: 14, temp1: 35, temp2: 91, volume: 2744, val: 451772160
451772160