Guest User

Untitled

a guest
Jul 18th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. #include<cstdio>
  2. #include<sstream>
  3. #include<cstdlib>
  4. #include<cctype>
  5. #include<cmath>
  6. #include<algorithm>
  7. #include<set>
  8. #include<queue>
  9. #include<stack>
  10. #include<list>
  11. #include<iostream>
  12. #include<fstream>
  13. #include<numeric>
  14. #include<string>
  15. #include<vector>
  16. #include<cstring>
  17. #include<map>
  18. #include<iterator>
  19.  
  20. using namespace std;
  21. std::map<long long, long long> smap;
  22.  
  23. void create(long org, long mult, int pos){
  24. if(pos == 10)
  25. return;
  26. long res = org*10 + mult;
  27. smap[pos] = res;
  28. create(res, mult*10, pos+1);
  29. }
  30.  
  31. long pass(int n){
  32. string str = to_string(n);
  33. ll sum = 0;
  34. for(int i = 0; i<str.size(); i++){
  35. int org = str[i]-48;
  36. unsigned long si = str.size()-i-1;
  37. int temp = (org*(org-1))/2;
  38. if(org>0){
  39. sum += (org*smap[si]) + (temp*pow(10, si)) + org;
  40. string sub = str.substr(i+1);
  41. if(sub.size()){
  42. ll te = stoll(sub);
  43. sum += te*org;
  44. }
  45. }
  46. }
  47. return sum;
  48. }
  49.  
  50. class SumThemAll {
  51. public:
  52. long long getSum(int lowerBound, int upperBound){
  53. create(0,45,1);
  54. return (pass(upperBound) - pass(lowerBound-1 < 0 ? 0 : lowerBound-1));
  55. }
  56. };
Add Comment
Please, Sign In to add comment