F. Interesting Function Codeforces Round 725 (Div. 3)

本文介绍了一个编程问题,如何计算从给定的较小整数l到较大整数r,每次加11,直到结果等于r时总共改变的数字总数。通过将问题分解为个位数进位和逐步除以10的步骤,给出了C++代码实现方法。

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值