fork download
  1. //#include "stdafx.h"
  2. #include <vector>
  3. #include <chrono>
  4. #include <iostream>
  5.  
  6. using namespace std;
  7. using namespace std::chrono;
  8.  
  9. using number = double;
  10. const int n = 100000;
  11.  
  12. vector<number> x(n);
  13.  
  14. inline number Harry()
  15. {
  16. number sum = 0;
  17. number part = 0;
  18.  
  19. for (int i = n - 1; i > 0; --i)
  20. {
  21. sum += x[i - 1] * (part += x[i]);
  22. }
  23. return sum;
  24. }
  25.  
  26. inline number VladD()
  27. {
  28. number s = 0;
  29. for (int i = 0; i < n; ++i) s += x[i];
  30. number s2 = 0;
  31. for (int i = 0; i < n; ++i) s2 += x[i] * x[i];
  32. return (s * s - s2) / 2;
  33. }
  34.  
  35. int main(int argc, const char * argv[])
  36. {
  37. for (int i = 0; i < x.size(); ++i)
  38. x[i] = (number)rand();
  39.  
  40. {
  41. number sum = 0;
  42. auto begin = steady_clock::now();
  43. for (int i = 0; i < 10000; ++i) sum += VladD();
  44. auto end = steady_clock::now();
  45. cout << "sum = " << sum << ", elapsed time = " << duration_cast<milliseconds>(end - begin).count() << endl;
  46. }
  47.  
  48. {
  49. number sum = 0;
  50. auto begin = steady_clock::now();
  51. for (int i = 0; i < 10000; ++i) sum += Harry();
  52. auto end = steady_clock::now();
  53. cout << "sum = " << sum << ", elapsed time = " << duration_cast<milliseconds>(end - begin).count() << endl;
  54. }
  55. }
Success #stdin #stdout 3.73s 15240KB
stdin
Standard input is empty
stdout
sum = 5.76149e+31, elapsed time = 2373
sum = 5.76149e+31, elapsed time = 1364