[CF1538F] Interesting Function 的题解
题目大意
给定两个正整数 ,将 不断加 直到 ,求出这一过程中 发生变化的位数总数。
- 。
思路
假设从 处理到 变化的次数为 。
因为直接求解出 十分困难,所以可以通过求出 和 最后做差得到。
假设一个数为 那么从 一直变化到 对于各位变化的次数就是 。
因为从 增加的 一共增加了 次。
而每当他增加一次,这个数的个位就会变化一次。
考虑从后向前数第 为,假设增加一次为 ,那么随着每增加一次,第 位就会变化一次。
因为走后会变成 ,所以第 位一共会变换 。
AC Code
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=50;
char a[N],b[N];
void solve(){
int ans=0;
cin>>a+1>>b+1;
int n=strlen(a+1),m=strlen(b+1);
for(int i=1,x=0;i<=n;i++){
x=x*10+a[i]-48;
ans-=x;
}
for(int i=1,x=0;i<=m;i++){
x=x*10+b[i]-48;
ans+=x;
}
cout<<ans<<'\n';
}
signed main(){
int T;
cin>>T;
while(T--){
solve();
}
return 0;
}