首页 > 其他分享 >[CF1538F] Interesting Function 的题解

[CF1538F] Interesting Function 的题解

时间:2024-07-14 13:53:29浏览次数:6  
标签:Function lfloor 10 int 题解 Interesting CF1538F

题目大意

给定两个正整数 \(l, r\),将 \(l\) 不断加 \(1\) 直到 \(l = r\),求出这一过程中 \(l\) 发生变化的位数总数。

  • \(1 \le l < r \le 10^9\)。

思路

假设从 \(l\) 处理到 \(r\) 变化的次数为 \(f(l,r)\)。

因为直接求解出 \(f(l,r)\) 十分困难,所以可以通过求出 \(f(0,l)\) 和 \(f(0,r)\) 最后做差得到。

假设一个数为 \(x\) 那么从 \(0\) 一直变化到 \(x\) 对于各位变化的次数就是 \(x\)。

因为从 \(0\) 增加的 \(x\) 一共增加了 \(x\) 次。

而每当他增加一次,这个数的个位就会变化一次。

考虑从后向前数第 \(k\) 为,假设增加一次为 \(10^{k-1}\),那么随着每增加一次,第 \(k\) 位就会变化一次。

因为走后会变成 \(x\),所以第 \(k\) 位一共会变换 \(\lfloor x/10^{k-1}\rfloor\)。

\[f(0,l)=\sum _{i=0}^{(\log_{10}l)-1} \lfloor l/{10^i}\rfloor \]

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

标签:Function,lfloor,10,int,题解,Interesting,CF1538F
From: https://www.cnblogs.com/liudagou/p/18301460

相关文章

  • 题解:CodeForces 1511 C Yet Another Card Deck[暴力/模拟]
    CodeForces1511CC.YetAnotherCardDeckDescriptionYouhaveacarddeckof\(n\)cards,numberedfromtoptobottom,i. e.thetopcardhasindex\(1\)andbottomcard —index\(n\).Eachcardhasitscolor:the\(i\)-thcardhascolor\(a_i\......
  • 「ABC217F」Make Pair 的题解
    题目大意一共\(2N\)个学生站成一排,其中有\(M\)对朋友关系。老师每次从队列中挑出两个相邻的学生作为同桌。为了关系和睦,每次选出的两个学生必须是朋友关系。选出的两个学生离开队列,空出来的位置左右合拢。请问老师有多少种方式选完所有学生?对于两种选人的方案,即使同桌关系相......
  • [COCI2015-2016#6] PAROVI 的题解
    题意选择一些\(n\)一下互质的二元组\(\{a,b\}\),求对于任意\(x\in\big[2,n\big]\)都不满足\(a,b<x\)和\(a,b\gex\)的个数。简化题意因为无解的情况只发生在所有的\(\{a,b\}\)之间没有多余的位置用于放置\(x\),所以题意可以抽象成这样:选择一些区间互质的区间\([a......
  • [COCI2006-2007#4] ZBRKA 的题解
    题目大意在一个长度为\(n\)的排列中找出逆序对数量恰好为\(c\)的排列总数,其中\(1\len\le10^3,1\lec\le10^4\)。思路考虑将\(1\)到\(n\)这些数从小到大一次填进去,因为每一次填入的数多是最大的,所以逆序对增加的数量只与其所在的位置相关,所以设计\(f_{i,j}\)表......
  • Snow Walking Robot 的题解
    题目大意给你一个机器人和机器人的\(n\)个运动,要求你在给出的运动路径的基础上设计一种不会走重复的路径的方法,注意只能减少原来的步数而不能增加,其中\(1\len\le10^5\)。思路因为这道题目可以自由的配置路径并且要求机器人在最后回到原来的位置,那么就应该要到一种适合所有......
  • [EGOI2021] Luna likes Love 的题解
    题目大意有\(2\timesn\)个人站成一排,然后给每个人分配一个\(1\)至\(n\)之间的数字,每种数字出现\(2\)次。现在,你可以进行两种操作:删除操作,将数字相同且相邻的两人删除,删除后两端剩下的队列合并。交换操作,交换相邻两个人的位置。每次,问至少操作多少次能够删除所有人......
  • Unusual Minesweeper 题解
    题目大意给你\(n\)个炸弹,第\(i\)个炸弹在\((x_i,y_i)\)的位置,可以将这一行与这一列的距离小于\(k\)的其他所有炸弹引爆,而且连锁的引爆不需要时间。每一秒你可以引爆一个炸弹,其中第\(0\)秒也可以引爆,并且第\(i\)个炸弹在第\(timer_i\)的时候会自己爆炸。要求输出引......
  • [ARC115B] Plus Matrix 的题解
    题目大意给你一个\(n\timesn\)的数组\(C\),\(c_{i,j}=a_i+b_j\),求\(a\)数组与\(b\)数组,不保证有解,其中\(1\len\le500,1\lec_{i,j}\le10^9\),而且\(a_i,b_i\)都是非负整数。\[\begin{bmatrix}a_1+b_1&a_1+b_2&\cdots&a_1+b_{n-1}&a_1+b_n\\a_2+b_......
  • P2188 小Z的 k 紧凑数 题解
    题目传送门前置知识数位DP|记忆化搜索解法基础数位DP,与luoguP2657[SCOI2009]windy数类似,记录当前位置、上一位填的数码,接着记忆化搜索即可。需要注意的是有前导零时,此时不需要管相邻两位数字差的绝对值不超过\(k\)的限制。代码#include<bits/stdc++.h>usingn......
  • SP14887 GOODA - Good Travels 题解
    题目传送门前置知识Tarjan算法|最短路解法缩点后原图就成为了一个有向无环图,此时每个点最多被经过一次,故在求最长路的过程中可以将点权和边权混着转移。上篇题解用拓扑实现查找两点间最长路的做法正确性不会证,遂写了份Dijkstra求最长路。代码#include<bits/stdc++.h......