等价转换思想,以10,每次对齐一位即可
题目:
ac代码:
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- using namespace std;
- const int N = 5e5+10;
- typedef long long int LL ;
- typedef pair<int,int> PII ;
- // char a[N];
- int main()
- {
-
- map<int,int> mp;
- mp[1] = 1;
- for(int i = 2; i <= 10 ; i ++)
- {
- mp[i] = mp[i-1] * 10 + 1 ;
- }
-
- int t;
- cin >> t;
- while(t--)
- {
- LL l , r;
- cin >> l >> r;
- int t = 0 ;
- int k = 0 ;
- long long int ans = 0 ;
- while(l || r || t)
- {
- k ++ ;
- int templ = l % 10 + t;
- int tempr = r % 10 ;
-
- if(templ <= tempr)
- ans += (tempr - templ)*mp[k];
- else if(templ > tempr)
- {
- t += 10;
- ans += (10 - templ + tempr )*mp[k] + 1;
- }l;
- t /=10;
- l/=10;
- r/=10;
- }
- cout << ans << endl;
- }
- return 0;
-
- }