problem8.c 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include <stdio.h>
  2. #include <string.h>
  3. // I need this function to compute the result
  4. int product (int x1, int x2, int x3, int x4, int x5, int x6, int x7, int x8, int x9, int x10, int x11, int x12, int x13) {
  5. return x1 * x2 * x3 * x4 * x5 * x6 * x7 * x8 * x9 * x10 * x11 * x12 * x13;
  6. }
  7. //since the largest product will consist of the same numbers that make the largest sum, I'll just find the largest sum first
  8. //this might not be correct 9 + 9 + 9 + ... + 0 may be the largest sum BUT not the largest product
  9. int sumf (int x1, int x2, int x3, int x4, int x5, int x6, int x7, int x8, int x9, int x10, int x11, int x12, int x13) {
  10. return x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 + x13;
  11. }
  12. //this will return the index that holds the largest sum
  13. int largestSumAtIndex (char string []) {
  14. int stringLength = strlen (string);
  15. int maxSum = 0;
  16. int sum = 0;
  17. int i = 0;
  18. for (i = 0; i < stringLength - 12; i++) {
  19. sum = sumf ((int)string [i], (int)string[i+1], (int)string[i+2], (int)string [i+3], (int)string [i+4], (int)string [i+5], (int)string [i+6], (int)string [i+7], (int)string [i+8], (int)string [i+9], (int)string [i+10], (int)string [i+11], string [i+12]);
  20. maxSum = sum > maxSum ? sum : maxSum;
  21. }
  22. return i;
  23. }
  24. //this will return the index that holds the largest product
  25. int largestProductAtIndex (char string []) {
  26. int stringLength = strlen (string);
  27. int maxProduct = 0;
  28. int productf = 0;
  29. int i = 0;
  30. for (i = 0; i < stringLength - 12; i++) {
  31. productf = product ((int)string [i], (int)string[i+1], (int)string[i+2], (int)string [i+3], (int)string [i+4], (int)string [i+5], (int)string [i+6], (int)string [i+7], (int)string [i+8], (int)string [i+9], (int)string [i+10], (int)string [i+11], string [i+12]);
  32. maxProduct = productf > maxProduct ? productf : maxProduct;
  33. }
  34. return i;
  35. }
  36. int main () {
  37. char string [] = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450";
  38. int i = largestProductAtIndex (string);
  39. int maxProduct = product (string[i], string[i,1], string [i, 2], string [i, 3], string [i, 4], string [i, 5], string [i, 6], string [i, 7], string [i, 8], string [i, 9], string [i, 10], string [i, 11], string [i, 12]);
  40. printf ("the greateng product is %d \n", maxProduct);
  41. }