You are given two integers l� and r�, where l<r�<�. We will add 11 to l� until the result is equal to r�. Thus, there will be exactly r−l�−� additions performed. For each such addition, let's look at the number of digits that will be changed after it.
For example:
- if l=909�=909, then adding one will result in 910910 and 22 digits will be changed;
- if you add one to l=9�=9, the result will be 1010 and 22 digits will also be changed;
- if you add one to l=489999�=489999, the result will be 490000490000 and 55 digits will be changed.
Changed digits always form a suffix of the result written in the decimal system.
Output the total number of changed digits, if you want to get r� from l�, adding 11 each time.
Input
The first line contains an integer t� (1≤t≤1041≤�≤104). Then t� test cases follow.
Each test case is characterized by two integers l� and r� (1≤l<r≤1091≤�<�≤109).
Output
For each test case, calculate the total number of changed digits if you want to get r� from l�, adding one each time.
Example
input
Copy
4 1 9 9 10 10 20 1 1000000000
output
Copy
8 2 11 1111111110
题目大意:
从l到r数字变更了多少次单个数字。
思路:
分成两部分:两数之差,l到r需要的进位。
两数之差是r-l,两数的个位数进位是r/10-l/10,然后两数一直/10,知道两个数都变成0就行。
方法:
循环直到两数都为0
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl "\n"
void solve(){
ll sum=0,x,y;
cin >> x >> y;
while(x || y){
sum += y-x;
y/=10;
x/=10;
}
cout << sum << endl;
return;
}
int main(){
ll t=1;cin >> t;
while(t --)solve();
return 0;
}