Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<cstdio>
- #include<sstream>
- #include<cstdlib>
- #include<cctype>
- #include<cmath>
- #include<algorithm>
- #include<set>
- #include<queue>
- #include<stack>
- #include<list>
- #include<iostream>
- #include<fstream>
- #include<numeric>
- #include<string>
- #include<vector>
- #include<cstring>
- #include<map>
- #include<iterator>
- using namespace std;
- std::map<long long, long long> smap;
- void create(long org, long mult, int pos){
- if(pos == 10)
- return;
- long res = org*10 + mult;
- smap[pos] = res;
- create(res, mult*10, pos+1);
- }
- long pass(int n){
- string str = to_string(n);
- ll sum = 0;
- for(int i = 0; i<str.size(); i++){
- int org = str[i]-48;
- unsigned long si = str.size()-i-1;
- int temp = (org*(org-1))/2;
- if(org>0){
- sum += (org*smap[si]) + (temp*pow(10, si)) + org;
- string sub = str.substr(i+1);
- if(sub.size()){
- ll te = stoll(sub);
- sum += te*org;
- }
- }
- }
- return sum;
- }
- class SumThemAll {
- public:
- long long getSum(int lowerBound, int upperBound){
- create(0,45,1);
- return (pass(upperBound) - pass(lowerBound-1 < 0 ? 0 : lowerBound-1));
- }
- };
Add Comment
Please, Sign In to add comment